2011-09-21 4 views
2

데 어려움이 쥐고 : 당신이 당신의 양식을 게시 한, 그리고 그것을 이해가 안 그러나 movieToEdit.Id아주 간단한 MVC 질문입니다. 편집중인 객체의 ID가 무엇인지 어떻게 알 수 있습니까?

을 확인하여 편집거야 영화를 얻을이 경우

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Edit(Movie movieToEdit) 
{ 

    var originalMovie = (from m in _db.MovieSet 
         where m.Id == movieToEdit.Id 
         select m).First(); 

을 이드가 무엇인지 어떻게 아는지. 나는 그 movieToEdit이 View를 검토함으로써 만들어 졌다고 생각했다. 보기의 필드는 다음과 같습니다

<fieldset> 
    <legend>Fields</legend> 
    <p> 
     <label for="Title">Title:</label> 
     <%= Html.TextBox("Title", Model.Title) %> 
     <%= Html.ValidationMessage("Title", "*") %> 
    </p> 
    <p> 
     <label for="Director">Director:</label> 
     <%= Html.TextBox("Director", Model.Director) %> 
     <%= Html.ValidationMessage("Director", "*") %> 
    </p> 
    <p> 
     <label for="DateReleased">DateReleased:</label> 
     <%= Html.TextBox("DateReleased", String.Format("{0:g}", Model.DateReleased)) %> 
     <%= Html.ValidationMessage("DateReleased", "*") %> 
    </p> 
    <p> 
     <input type="submit" value="Save" /> 
    </p> 
</fieldset> 

아마도 당신이 자동으로 페이지에 텍스트 상자를 기반으로 movieToEdit를 구성합니다 저장 쳤을 때. 하지만 이드는 페이지의 필드 중 하나가 아니므로 그게 무엇인지 어떻게 알 수 있습니까? Id와 같은 속성에 대해 숨겨진 필드를 자동으로 생성합니까? 기본 MVC 경로 정의이기 때문에

답변

1

ID는 URL에서 가능성이 높습니다 :

{controller}/{action}/{id} 

귀하의 <form> 다시 같은에보기 가장 가능성이 게시물 : N 영화 ID입니다

http://www.yourappaddress.com/movies/edit/N 

. 다른 모든 동영상 속성 값은 양식 POST 값을 통해 전송됩니다.

+0

그렇다면 모델의 ID 속성이 URL의 ID에 매핑된다는 것을 어떻게 알 수 있습니까? 당신은 movie.id, movie.theatreid, movie.somethingid를 가질 수 있습니다. 어떤 것이 기본 키인지 알 필요가 있습니다 – NibblyPig

+0

@SLC :'Movie' 클래스는 자동으로 당신의 액션에 묶여있는'Id' 속성을 가지고 있기 때문에 메서드 매개 변수 당신이 다른 것 인 숨겨진 필드 안에'Id '를 공급할 때마다. MVC 코드는 어느 것이 우선적인지 체크해야합니다. 또는 직접 테스트하십시오. '<% = Html.HiddenFor (m => 100) %>'를 추가하고'movieToEdit'가 올바른'Id'를 갖거나 100이 될 것임을 확인하십시오.'Id '를 제공함으로써 같은 테스트를 할 수 있습니다. URL에 '? Id = 200' URL 쿼리 문자열 매개 변수로 입력하십시오. –

+0

@SLC, 더 구체적으로 영화를 * 모델 *로 만들었 기 때문에 모델에 ID 속성이 있습니다 (대소 문자는 중요하지 않음). – Blindy

관련 문제