gpt4 book ai didi

asp.net-mvc - 禁用 View 中的必需验证特定字段 ASP.NET MVC 4

转载 作者:行者123 更新时间:2023-12-04 12:15:23 25 4
gpt4 key购买 nike

如果有人能给我一些提示,我将不胜感激。

我搜索了一段时间,我什至找到了一个帖子,我认为它可以解决我的问题,但没有。

Disable Required validation attribute under certain circumstances

基本上我有一个简单的 User.cs 模型,我有用户名,名字 , 姓氏 注册日期

所有人都有所需的注释,我想在不删除 的情况下解决这个问题。必填 标签。

生成 View 后,我在 View 中删除了 的 html 代码。注册日期 :

 <div class="editor-label">
@Html.LabelFor(model => model.SignupDate)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.SignupDate)
@Html.ValidationMessageFor(model => model.SignupDate)
</div>

当我点击 提交 这是行不通的。

另外,如果我按照其他帖子中的建议进行操作
<div class="editor-label">
@Html.LabelFor(model => model.SignupDate)
</div>
<div class="editor-field">
@Html.TexBoxFor(model => model.SignupDate, new { data_val = false })
</div>

如果我把它留空也不起作用..

有什么建议?谢谢!!

最佳答案

您可以在 View 上禁用客户端验证,并为那些不想验证值的实体移除模型状态上的错误。

就我而言,我只想在用户输入密码时更改密码。使用 Html.HiddenFor 不是一个好方法,因为每次都将密码发送给客户端,并且不应发送密码。

我所做的是禁用 View 上的客户端验证

@model MyProject.Models.ExistingModelWithRequiredFields

@{
ViewBag.Title = "Edit";
Html.EnableClientValidation(false);
}

这使我即使使用空值也可以提交表单。请注意 所有客户端验证都被忽略 ,然而 服务器验证仍在运行 ,所以你需要清除那些你不需要执行的。为此,请转到 Controller 中的操作并删除您需要的每个属性的错误
public ActionResult Edit(ExistingModelWithRequiredFields updatedModel)
{
var valueToClean = ModelState["RequiredPropertyName"];
valueToClean.Errors.Clear();
if(ModelState.IsValid)
{
...
//Optionally you could run validations again
if(TryValidateModel(updatedModel)
{
...
}
...
}
...
}

关于asp.net-mvc - 禁用 View 中的必需验证特定字段 ASP.NET MVC 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13900993/

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