jpo*_*jpo 4 asp.net-mvc annotations required
为模型定义参数后
[Required(AllowEmptyStrings = false, ErrorMessage = "No null")]
[DisplayName("Name")]
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
是否可以为某些视图更改此参数的属性?例如,我想要为view1,view2和view3保留这些属性(必需属性),而不是view4.我可以为view3禁用此属性吗?
是否可以为某些视图更改此参数的属性?
不,属性在编译时被烘焙到程序集中.
正确的方法是使用视图模型:
public class CreateViewModel
{
[DisplayName("Name")]
public string Name { get; set; }
}
public class EditViewModel
{
[Required(AllowEmptyStrings = false, ErrorMessage = "No null")]
[DisplayName("Name")]
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
以及从2个视图提交表单时调用的各自控制器操作将与视图模型一起使用:
public ActionResult Create(CreateViewModel model)
{
... the name will not be required here
if (ModelState.IsValid)
{
}
}
public ActionResult Edit(EditViewModel model)
{
... the name will be required here
if (ModelState.IsValid)
{
}
}
Run Code Online (Sandbox Code Playgroud)
替代方法将包括自定义模型绑定器或实现IValidatableObject接口,并基于当前操作进行一些动态验证.用两个词来说,你正朝着深渊走去.就个人而言,如果你不喜欢我推荐的解决方案,这不是我会搞砸的事情,但如果你想在那个方向上自由探索.
| 归档时间: |
|
| 查看次数: |
2810 次 |
| 最近记录: |