加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MVC:仅在某些视图上创建模型参数

发布时间:2020-12-16 06:26:00 所属栏目:asp.Net 来源:网络整理
导读:为模型定义参数后 [Required(AllowEmptyStrings = false,ErrorMessage = "No null")][DisplayName("Name")]public string Name { get; set; } 是否可以为某些视图更改此参数的属性?例如,我想要为view1,view2和view3保留这些属性(必需属性),而不是view4.我可
为模型定义参数后

[Required(AllowEmptyStrings = false,ErrorMessage = "No null")]
[DisplayName("Name")]
public string Name { get; set; }

是否可以为某些视图更改此参数的属性?例如,我想要为view1,view2和view3保留这些属性(必需属性),而不是view4.我可以为view3禁用此属性吗?

解决方法

is it posible to change the properties of this parameters for certain view?

不,属性在编译时被烘焙到程序集中.

正确的方法是使用视图模型:

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; }
}

以及从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)
    {

    }
}

替代方法包括自定义模型绑定器或实现IValidatableObject接口,并根据当前操作进行一些动态验证.用两个词来说,你正朝着深渊走去.就个人而言,如果你不喜欢我推荐的解决方案,这不是我会搞砸的事情,但是如果你想在那个方向上自由探索.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读