如何在MVC4中跳过客户端验证?

时间:2013-12-21 06:37:48

标签: asp.net-mvc validation asp.net-mvc-4

我创建了一个模型

public class ProductModels
{

    [Required]
    public int ProductId { get; set; }

    [Required]
    public string ProductName { get; set; }

    [Required]
    public int SubCatId { get; set; }



}

我可以使用以下内容跳过服务器端验证:

ModelState.Remove("ProductName"); if (ModelState.IsValid) { }

在模型中字段设置为[必需],但是当用户执行任何发布事件时,我想在客户端跳过此必需的字段验证。

3 个答案:

答案 0 :(得分:1)

您应该忽略您不想验证的属性。您可以通过以下代码执行此操作:

$("#myform").validate({
    ignore: ".ignore"
})

如果您使用不显眼的验证,只需设置默认值。

$.validator.setDefaults({ 
    ignore: ":hidden .ignore" 
});

答案 1 :(得分:0)

转到您的视图目录之外的Web.config。

并在

中设置以下内容
<appSettings>

     <add key="ClientValidationEnabled" value="false" />
    <add key="UnobtrusiveJavaScriptEnabled" value="false" />
  </appSettings>

如果您需要任何进一步的帮助,请与我们联系

答案 2 :(得分:0)

To get rid of controller IsValid , use basecontroller to deal with that

 public class ResourceController : BaseController
    {
        // GET: /Resource/GetResources
        const int durationInSeconds = 2 * 60 * 60;  // 2 hours.

        /// <summary>
        /// Fetches resouces for javascript queries.
        /// </summary>
        /// <returns></returns>
        [OutputCache(VaryByCustom = "culture", Duration = durationInSeconds)]
        public JsonResult GetResources()
        {
            return Json(
                typeof(Resource)
                .GetProperties()
                .Where(p => !p.Name.IsLikeAny("ResourceManager", "Culture")) // Skip the properties you don't need on the client side.
                .ToDictionary(p => p.Name, p => p.GetValue(null) as string)
                 , JsonRequestBehavior.AllowGet);   

        }