我有一个视图有几个 editorfor/textboxfors
<% using(Html.BeginForm("New", "Controller", FormMethod.Post)) {%>
<%: Html.ValidationSummary(false) %>
<div>Address</div>
<div><%: Html.EditorFor(model => model.Address)</div>
<div>Zip Code</div>
<div><%: Html.EditorFor(model => model.Zip)</div>
<div>Total Mats</div>
<div><%: Html.EditorFor(model => model.TotalMats)</div>
<input type="image" src="<%: Url.Content("~/Content/Images/submit.png") %>" name="Submit" />
<% } %>
行动:
public ActionResult Edit(int Id, FormCOllecion) {
Event event = context.Event.FirstOrDefault(e => e.Id == Id);
if (TryUpdateModel(event) {
context.SaveChanges;
return RedirectToAction("Index", "Controller", new {value = Id});
}
return View(event);
}
模型:
[Bind(Include="Name,Date")]
public class Event
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
public int Participants { get; set; }
public int TotalMats { get; set; }
}
所以前两个 EditorFors 是字符串,而最后一个是 int (在模型上)。这是我注意到的一件事。我不确定这是否相关。但是每次我点击提交时,formcollection 都会显示 TotalMats 字段有一个值。但是一旦它通过 TryUpdateModel 就不会更新模型的属性。有什么我想念的吗?在我的一些使用 int 类型的属性的页面上,情况就是这样。我不得不手动进行 FormCollection["key"] 检索,但我不得不进行额外的验证,以确保它不会因非整数值而爆炸。