【发布时间】:2010-05-10 07:06:49
【问题描述】:
我将一个 ViewModel(其中包含一个“Person”对象)从“EditPerson”控制器操作传递到视图中。当从视图回传时,ActionResult 接收除 ID 之外的所有 Person 属性(它说它是零而不是说它的真正整数)
谁能告诉我为什么?
控制器如下所示:
public ActionResult EditPerson(int personID)
{
var personToEdit = repository.GetPerson(personID);
FormationViewModel vm = new FormationViewModel();
vm.Person = personToEdit;
return View(vm);
}
[HttpPost]
public ActionResult EditPerson(FormationViewModel model) <<Passes in all properties except ID
{
// Persistence code
}
视图如下所示:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Afp.Models.Formation.FormationViewModel>" %>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%= Html.LabelFor(model => model.Person.Title) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Person.Title) %>
<%= Html.ValidationMessageFor(model => model.Person.Title) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.Person.Forename)%>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Person.Forename)%>
<%= Html.ValidationMessageFor(model => model.Person.Forename)%>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.Person.Surname)%>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Person.Surname)%>
<%= Html.ValidationMessageFor(model => model.Person.Surname)%>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.DOB) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.DOB, String.Format("{0:g}", Model.DOB))
<%= Html.ValidationMessageFor(model => model.DOB) %>
</div>--%>
<div class="editor-label">
<%= Html.LabelFor(model => model.Person.Nationality)%>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Person.Nationality)%>
<%= Html.ValidationMessageFor(model => model.Person.Nationality)%>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.Person.Occupation)%>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Person.Occupation)%>
<%= Html.ValidationMessageFor(model => model.Person.Occupation)%>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.Person.CountryOfResidence)%>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Person.CountryOfResidence)%>
<%= Html.ValidationMessageFor(model => model.Person.CountryOfResidence)%>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.Person.PreviousNameForename)%>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Person.PreviousNameForename)%>
<%= Html.ValidationMessageFor(model => model.Person.PreviousNameForename)%>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.Person.PreviousSurname)%>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Person.PreviousSurname)%>
<%= Html.ValidationMessageFor(model => model.Person.PreviousSurname)%>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.Person.Email)%>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Person.Email)%>
<%= Html.ValidationMessageFor(model => model.Person.Email)%>
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
Person 类看起来像:
[MetadataType(typeof(Person_Validation))]
public partial class Person
{
public Person()
{
}
}
[Bind(Exclude = "ID")]
public class Person_Validation
{
public int ID { get; private set; }
public string Title { get; set; }
public string Forename { get; set; }
public string Surname { get; set; }
public System.DateTime DOB { get; set; }
public string Nationality { get; set; }
public string Occupation { get; set; }
public string CountryOfResidence { get; set; }
public string PreviousNameForename { get; set; }
public string PreviousSurname { get; set; }
public string Email { get; set; }
}
和 ViewModel:
public class FormationViewModel
{
public Company Company { get; set; }
public Address RegisteredAddress { get; set; }
public Person Person { get; set; }
public PersonType PersonType { get; set; }
public int CurrentStep { get; set; }
}
}
【问题讨论】:
标签: asp.net-mvc entity-framework