gpt4 book ai didi

asp.net-mvc - MVC : Make model parameter required only on certain views

转载 作者:行者123 更新时间:2023-12-05 01:12:21 26 4
gpt4 key购买 nike

为模型定义参数后

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

是否可以为某些 View 更改此参数的属性?例如,我希望这些属性(必需的属性)适用于 view1、view2 和 view3,但不适用于 view4。我可以为 view3 禁用此属性吗?

最佳答案

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



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

正确的方法是使用 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 个 View 提交表单时将调用的您各自的 Controller 操作将与 View 模型一起使用:
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)
{

}
}

替代方法包括自定义模型绑定(bind)器或实现 IValidatableObject接口(interface)并根据当前操作进行一些动态验证。简而言之,你正在走向深渊。就个人而言,这不是我会搞砸的事情,但是如果您不喜欢我推荐的解决方案,请随时朝那个方向探索。

关于asp.net-mvc - MVC : Make model parameter required only on certain views,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14348144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com