为了验证,我决定尝试使用@Html.TextBoxFor
,以便快速和容易地验证。但是,没有设置值的选项,我假设它是自动完成的,但它不是自动设置的。
控制器:
MyLibrary.MyProspect prospect = MyLib.GetProspect(ID);
return View(prospect);
视图:
@model MyLibrary.MyProspect
@using (Html.BeginForm("Update", "Prospects"))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Edit</legend>
@Html.LabelFor(model => model.Name)
@Html.TextBoxFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
我的图书馆对Prospect的定义:
public class MyProspect
{
public String Name { get; set; }
}
我的猜测是,在任何时候,我都没有设置模型实际上是我的前景。但我没有遇到过这样的例子,我想我已经把它从我的观点中传递出去了?
这是工作代码,我只是混合和匹配我的控制器操作到错误的视图。
你写的代码看起来是正确的,我猜你的问题是在MyLib.GetProspect(ID)没有设置Name字段的值。
要使客户端验证工作,您需要做以下几件事:
- 使用适当的DataAnnotations修饰模型中的一些字段
- 确保你有
ClientValidationEnabled
&UnobtrusiveJavaScriptEnabled
options设置为"true
"。这可以直接在<appSettings>
中完成。 - 在页面中包含相应的库,即
jquery.validate.min.js
和jquery.validate.unobtrusive.min.js
如果您没有特殊的视图要求,您可以将代码减少为:
@Html.EditorForModel()
@model MyLibrary.MyProspect
这一行将模型设置为MyProspect。
你的MyProspect上有数据注释吗?名称属性?
也许可以添加您对MyProspect的定义。