上下文:使用EF的MVC 2应用程序。
为什么有些工作,但有些不工作?显示名称设置为“Court Name”但未进行验证,即我没有看到错误消息。我认为编辑器模板干扰了验证,否则Model.IsValid不适用于复杂的视图模型。
有什么想法吗?
PARTIAL CLASS:
[MetadataType(typeof(CourtMetaData))]
public partial class Court
{
private class CourtMetaData
{
[Required(ErrorMessage = "Court Name is required")]
[DisplayName("Court Name")]
public System.String CourtName
{
get;
set;
}
}
}
控制器:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult New(CourtsNewViewModel court)
{
if (ModelState.IsValid)
{
db.AddCourt(court);
return View("List");
}
else
{
return View("New", court);
}
}
查看模特:
public class CourtsNewViewModel : ViewModelBase
{
public Court Court {get; private set; }
public IEnumerable<CourtType> CourtTypes { get; private set; }
public CourtsNewViewModel()
{
CourtTypes = db.GetAllCourtTypes();
}
}
查看:
Html.EditorFor(model => model.Court.CourtName, "LongString")
编辑模板:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.String>" %>
<div class="editor-row">
<div class="editor-label">
<%= Html.LabelFor(model => model) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model)%>
<%= Html.ValidationMessageFor(model => model) %>
</div>
</div>
答案 0 :(得分:1)
这是陷阱:
public ActionResult New(CourtsNewViewModel court)
court
变量已被使用,因为您的模型上有Court
属性。
现在重命名参数:
public ActionResult New(CourtsNewViewModel courtModel)
一切都应该按预期工作。