2010-01-22 1 views
0

내 첫 번째 ASP.NET MVC 프로젝트에서 작업 중이며 편집에서 데이터를 반환 할 때 이상한 동작이 나타납니다. 내 컨트롤러 동작보기.ASP.NET MVC1 - 모델 (NOOB 질문)에 반환되는 모든 요청 필드가 없습니다. (NOOB 질문)

지금은 페이지에 3 개의 텍스트 상자와 PKey에 대해 하나의 숨겨진 텍스트 상자가 있습니다. 모두가 올바르게 viewdata에서 채워지지만, 양식을 제출하면 리턴 된 모델에 3 개의 필드 중 2 개만 표시됩니다. 그러나 세 개의 필드는 모두 요청 개체에 올바르게 채워집니다. 여기에보기 자체의 '고기'를 것

public ActionResult Edit(System.Guid Id) 
    { 

     SetBase sb = setBaseRepository.Get(Id); 
     return View("Edit", sb); 
    } 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Edit(SetBase setBase) 
    { 
     //if (setBase.Title.Trim().Length == 0) 
     //{ 
     // ModelState.AddModelError("Title", "Title is required."); 
     //} 
     if (setBase.Year.Trim().Length == 0) 
     { 
      ModelState.AddModelError("Year", "Year is required."); 
     } 
     if (!ModelState.IsValid) 
     { 
      return View("Edit", setBase); 
     } 
     setBaseRepository.SaveOrUpdate(setBase); 
     return View(); 
    } 

을 그리고 :

아마 아주 잘 설명하지만, 여기에 몇 가지 관련 코드가 잘하면 더 나은 설명 자르는의 아니에요

<viewdata model="CardTracker.Core.SetBase"> 
<content name="MainContent"> 
<% MvcForm form = Html.BeginForm("Edit", "SetBase", Model.Id); %> 

<%=Html.ValidationSummary("Update was unsuccessful. Please correct the errors and try again.", new { class = "dataEntryError" })%> 

<fieldset> 
    <legend class="dataEntry">Edit Set Base</legend> 
<div> 
!{Html.Hidden("Id")} 
<label class="dataEntry" for="Title" >Title: </label> ${Html.TextBox("Title", Model.Title, new { class = "dataEntryLong" })} 
<%=Html.ValidationMessage("Title", "***", new { class = "dataEntryError" })%> 
</br> 

<label class="dataEntry" for="Year">Year:</label>${Html.TextBox("Year", null, new { class = "dataEntryNumber" })} 
<%=Html.ValidationMessage("Year", "***", new { class = "dataEntryError" })%> 
</br> 


</div> 
<input type="submit" value="Update" class="button" /> 
</fieldset> 
<% form.EndForm(); %> 
</content> 

'Id'와 'Year'필드는 정상적으로 반환되지만 'Title'은 항상 비어있게됩니다. 나는 그 모든 것이 정확히 어디에서나 철자가 맞는지 확인했다.

내가 분명히 잘못된 것을하고 있다고 확신하지만 나는 그것을 보지 못합니다. 내가 연구 한 수많은 예제는 도움이되지 않으며 대부분 편집 대신 기능 추가를 보여줍니다.

미리 도움을 청하십시오.

+0

3 개의 입력란을 언급했지만 숨겨진 입력란이 2 개인 경우가 2 개뿐입니다. –

+0

예, 코드를 짧게 유지하기 위해 이름에서 제외하고 '연도'와 사실상 동일한 추가 숫자 필드를 삭제했습니다. 그것이 존재하든 그렇지 않든 행동에 영향을주지 않습니다. –

답변

0

나는 아마도 내가 정말 당신을하는 데 도움이 뭔가 우연히 발견 될 때까지 내가 알 수있는 것들을 나열 시작하려고 해요 :

  1. 제목 필드는 실제로 모델을 참조하는 전용 필드입니다. 연도 필드에 초기 값이 null입니다. 나는 정말로 이것이 중요하다고 생각하지 않지만 그것이 볼 수있는 유일한 차이점이다.
  2. 단지 이상한 엣지 경우를 찾으려고합니다. 그래서 BeginForm ("Edit", "SetBase", Model.id) 문에서 "SetBase"값이 컨트롤러를 실제로 호출하고 있는지 확인합니다. 그것은 분명히 괜찮은 모델과 같은 이름이지만 컨트롤러의 이름이 맞는지 확인하고 싶었습니다.

... 모든 것이 정상적으로 보이지만 분명히 잘못된 것입니다.

+0

그래, 그건 사물을 고치는 시도 였어. null로 바꾸면 여전히 실패합니다. –

+0

위의 # 2를 추가했습니다. 나는 이것이 정말로 문제라고 생각하지 않지만 그것을 가져올 것이라고 생각했다. –

+0

예, 올바른 컨트롤러 이름입니다. 원하는 ActionMethod에서 중단 점에 도달했기 때문에 확실합니다. 그래도 좋은 제안. –