[英]Disable Required Validation Specific Field in the View ASP.NET MVC 4
如果有人能给我一些暗示我会很感激。
我正在寻找一段时间,我甚至发现了一个帖子,我认为它可以解决我的问题,但事实并非如此。
基本上我有一个简单的User.cs模型,其中我有用户名, FirstName , LastName和SignupDate
所有都有必要的注释,我想解决这个问题而不删除必需的标记。
生成视图后,我在视图中删除SignupDate的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>
如果我把它留空也不起作用..
有什么建议么? 谢谢!!
您可以在视图上禁用客户端验证,并删除模型状态中的错误,以查找您不想验证该值的实体。
在我的情况下,我只想在用户键入密码时更改密码。 使用Html.HiddenFor不是一个好方法,因为每次都会向客户端发送密码,并且不应发送密码。
我所做的是禁用视图上的客户端验证
@model MyProject.Models.ExistingModelWithRequiredFields
@{
ViewBag.Title = "Edit";
Html.EnableClientValidation(false);
}
这允许我提交表格,即使是空值。 请注意, 所有客户端验证都会被忽略 ,但服务器验证仍会运行 ,因此您需要清除那些不需要执行的验证。 为此,请转到控制器中的操作并删除所需的每个属性的错误
public ActionResult Edit(ExistingModelWithRequiredFields updatedModel)
{
var valueToClean = ModelState["RequiredPropertyName"];
valueToClean.Errors.Clear();
if(ModelState.IsValid)
{
...
//Optionally you could run validations again
if(TryValidateModel(updatedModel)
{
...
}
...
}
...
}
我认为这应该解决它,假设model.SignupDate
持有一个值:
<%: Html.HiddenFor(model => model.SignupDate) %>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.