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 경로 정의이기 때문에
그렇다면 모델의 ID 속성이 URL의 ID에 매핑된다는 것을 어떻게 알 수 있습니까? 당신은 movie.id, movie.theatreid, movie.somethingid를 가질 수 있습니다. 어떤 것이 기본 키인지 알 필요가 있습니다 – NibblyPig
@SLC :'Movie' 클래스는 자동으로 당신의 액션에 묶여있는'Id' 속성을 가지고 있기 때문에 메서드 매개 변수 당신이 다른 것 인 숨겨진 필드 안에'Id '를 공급할 때마다. MVC 코드는 어느 것이 우선적인지 체크해야합니다. 또는 직접 테스트하십시오. '<% = Html.HiddenFor (m => 100) %>'를 추가하고'movieToEdit'가 올바른'Id'를 갖거나 100이 될 것임을 확인하십시오.'Id '를 제공함으로써 같은 테스트를 할 수 있습니다. URL에 '? Id = 200' URL 쿼리 문자열 매개 변수로 입력하십시오. –
@SLC, 더 구체적으로 영화를 * 모델 *로 만들었 기 때문에 모델에 ID 속성이 있습니다 (대소 문자는 중요하지 않음). – Blindy