我有一个像这样的Create-View。
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")"
type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"
type="text/javascript"></script>
@using (Html.BeginForm())
{
@Html.ValidationSummary(null, new { @class = "validation" })
...
<input class="cancel" type="submit" value="OK" />
...
<input name="submit" type="submit" value="Save" />
}..。和相应的控制器动作:
[HttpPost]
public ActionResult Create(string submit, MyViewModel myViewModel)
{
if (submit != null) // true, if "Save" button has been clicked
{
if (ModelState.IsValid)
{
// save model data
return RedirectToAction("Index");
}
}
else // if "OK" button has been clicked
{
// Disable somehow validation here so that
// no validation errors are displayed in ValidationSummary
}
// prepare some data in myViewModel ...
return View(myViewModel); // ... and display page again
}我发现我可以通过在"OK“按钮上设置class="cancel"来禁用客户端验证。这可以很好地工作。
但是,服务器端验证仍然会发生。有没有办法在控制器操作中禁用它(参见上面的Create操作中的else-block )?
感谢您的帮助!
发布于 2011-05-19 01:45:23
我最近遇到了一个类似的问题。我想从验证中排除一些属性,并使用以下代码:
ModelState.Remove("Propertyname");要隐藏errormessages,您可以使用
ModelState.Clear();但问题是,如果不使用这些值,为什么要提交它们?您最好使用重置按钮来重置表单中的值:
<input type="reset" value="Reset Form">发布于 2011-05-19 01:45:13
因此,如果提交字符串中没有任何内容,您希望它忽略检查模型状态是否有效,并假定它是有效的。
但是,它仍然会继续检查您的验证,并通过验证摘要显示在客户端。
如果您真的不关心本例中的错误,请尝试
ModelState.Clear()并删除其中的所有错误。
发布于 2011-05-19 01:32:28
服务器端验证必须在您的MyViewModel类中。您是否可以使用不实现验证的其他类?ViewModel中的数据注释负责将ModelState.IsValid设置为false。
https://stackoverflow.com/questions/6048670
复制相似问题