use*_*132 6 unobtrusive-validation asp.net-mvc-3
目前,我有一个使用Razor View引擎的MVC 3应用程序.我启用了不显眼的验证.问题是由于某种原因,在页面加载时,我的编辑视图显示必填字段的错误(即使字段有值).还有其他人遇到过这个吗?有什么建议可以解决这个问题?谢谢.
示例字段有问题:
<div class="full">
<label>Description:</label>
@Html.EditorFor(x=>x.Description, new{@class="super-textarea"})
@Html.ValidationMessageFor(x => x.Description)
</div>
Run Code Online (Sandbox Code Playgroud)
模型上的数据注释:
[Required, DataType(DataType.MultilineText)]
public virtual string Description { get; set; }
Run Code Online (Sandbox Code Playgroud)
WebConfig启用设置:
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
Run Code Online (Sandbox Code Playgroud)
当然还有正确的jquery文件......
use*_*132 11
好.发现了问题.由于模型绑定试图发生,验证正在发生.发生这种情况是因为我们的Get方法看起来像这样.
[HttpGet, RequestedObjectFilter]
public virtual ViewResult Edit(TKey id, T requestedObject)
{
return View(requestedObject);
}
Run Code Online (Sandbox Code Playgroud)
.NET MVC的一个特性是,无论何时将参考值作为ViewResult的Method Signature中的参数传递,都会触发ModelBinding,从而触发验证.我们将对象传递给我们的方法的原因是我们的RequestedObjectFilter,它将从我们的抽象存储库中获取相关实体,并通过ActionParameters属性将其传递给此方法.我们重构了RequestedObjectFilter来设置ViewModel,允许我们从方法中删除参数,从而解决问题.现在我们的方法如下所示:
[HttpGet, RequestedObjectFilter]
public virtual ViewResult Edit(TKey id)
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7678 次 |
| 最近记录: |