假设我有一个带有两个提交按钮的表单:保存和删除。
如何删除/禁用删除按钮上的模型验证?
答案 0 :(得分:3)
假设您正在使用标准的不显眼/ jQuery验证;通过放置一个"取消"来禁用客户端验证。在按钮上:
<button type="submit" class="cancel">Delete</button>
如果单击此按钮,这将阻止客户端验证完全触发。
对于服务器端,请不要检查模型是否有效。
答案 1 :(得分:0)
例如,如果模型上有属性Name
,并且您不想在删除时验证它。
首先需要区分httppost是来自保存还是删除按钮。
添加到您的模型字段IsDelete
。
我建议您在视图中添加以下内容:
@Html.HiddenFor(x => x.IsDelete)
将onclick事件添加到删除按钮:
<button type="submit" onclick="javacript: $('#IsDelete').val('true');"> Delete </button>
在控制器中执行以下操作:
public ActionResult MyAction(MyModel model)
{
if(model.IsDelete)
ModelState.Remove("Name");
var valid = ModelState.IsValid();
}
答案 2 :(得分:-1)
您可以在视图中使用两个单独的表单进行编辑和删除。
例如:
@using(Html.BeginForm("Edit", "Employee"))
{
//Edit inputs - ex textboxes for employee details such as name, age...
<input type="submit" value="Edit" />
}
@using(Html.BeginForm("Delete", "Employee"))
{
//Delete inputs - ex: hidden input for employee id
<input type="submit" value="Delete" />
}