2013-05-24 5 views
1

는 간단한 모델을 다음 한 I과 같이MVC4의 ViewModel에 항상 빈 [HttpPost]를

public class MyRecordModel 
{ 
    public MyRecordModel() 
    { 
    } 

    public string Name{ get; set; } 
    public string Surname { get; set; } 
    public string Email { get; set; } 
} 

그리고 나는 그것의 편집 모델이 있습니다

public partial class MyRecordEditModel 
{ 
    public MyRecordEditModel() 
    { 
     this.MyRecord= new MyRecordModel(); 
    } 
    public MyRecordModel MyRecord { get; set; } 
} 

컨트롤러는 또한 매우 간단합니다 :

그리고 이것은 내 견해입니다.

@model MyRecordEditModel 
@using (Html.BeginForm()) 
{ 
     @Html.HiddenFor(model => model.MyRecord.Id) 
     <table> 
      <tr> 
       <td> 
        @Html.LabelFor(model => model.MyRecord.Name): 
       </td> 
       <td> 
        @Html.EditorFor(model => model.MyRecord.Name) 
        @Html.RequiredHint() 
       </td> 
      </tr> 
      <tr> 
       <td> 
        @Html.LabelFor(model => model.MyRecord.Surname) 
       </td> 
       <td> 
        @Html.EditorFor(model => model.MyRecord.Surname) 
        @Html.RequiredHint() 
       </td> 
      </tr> 
      <tr> 
       <td> 
        @Html.LabelFor(model => model.MyRecord.Email): 
       </td> 
       <td> 
        @Html.EditorFor(model => model.MyRecord.Email) 
        @Html.RequiredHint() 
       </td> 
      </tr> 
     </table> 
     <div class="buttons"> 
      <input type="submit" value="@T("Common.Save")" />      
     </div> 
} 

뷰에서 반환 된 모델은 항상 비어 있습니다. 그러나 모델 대신 FormCollection을 사용하면 필드가 올바르게 채워집니다.

무엇이 문제 일 수 있습니까?

+0

왜 모두 요청에 대해 동일한 모델을 사용하지 않는 - GET 및 POST? 그들 사이의 데이터에 차이점을 볼 수 없습니다. – Bronek

답변

1

개인적으로 FormCollection을 사용하고 싶지 않습니다. 값 대신 Model을 사용해야합니다. 난 당신이 사용자 정의 모델 바인딩 접근 방식에 가야한다고 생각해. 주어진 링크 ModelBinding을 확인하십시오.

http://dotnetslackers.com/articles/aspnet/Understanding-ASP-NET-MVC-Model-Binding.aspx http://buildstarted.com/2010/09/12/custom-model-binders-in-mvc-3-with-imodelbinder/

+0

잘 읽었습니다. 문제는 여전히 알려지지 않은 이유로 양식의 필드 이름이 모델의 속성 이름과 다르다는 것입니다. –

관련 문제