首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ASP.NET MVC3中禁用HttpPost操作中的验证?

如何在ASP.NET MVC3中禁用HttpPost操作中的验证?
EN

Stack Overflow用户
提问于 2011-05-19 01:28:57
回答 4查看 12.7K关注 0票数 6

我有一个像这样的Create-View。

代码语言:javascript
复制
<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" />
}

..。和相应的控制器动作:

代码语言:javascript
复制
[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 )?

感谢您的帮助!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-19 01:45:23

我最近遇到了一个类似的问题。我想从验证中排除一些属性,并使用以下代码:

代码语言:javascript
复制
ModelState.Remove("Propertyname");

要隐藏errormessages,您可以使用

代码语言:javascript
复制
ModelState.Clear();

但问题是,如果不使用这些值,为什么要提交它们?您最好使用重置按钮来重置表单中的值:

代码语言:javascript
复制
<input type="reset" value="Reset Form">
票数 7
EN

Stack Overflow用户

发布于 2011-05-19 01:45:13

因此,如果提交字符串中没有任何内容,您希望它忽略检查模型状态是否有效,并假定它是有效的。

但是,它仍然会继续检查您的验证,并通过验证摘要显示在客户端。

如果您真的不关心本例中的错误,请尝试

代码语言:javascript
复制
ModelState.Clear()

并删除其中的所有错误。

票数 4
EN

Stack Overflow用户

发布于 2011-05-19 01:32:28

服务器端验证必须在您的MyViewModel类中。您是否可以使用不实现验证的其他类?ViewModel中的数据注释负责将ModelState.IsValid设置为false。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6048670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档