部分视图上的MVC 4自定义验证不显示错误消息?

时间:2017-06-22 15:01:44

标签: c# validation asp.net-mvc-4 asp.net-mvc-partialview error-messaging

当我点击索引页面上的提交按钮时,请看下图: index page

我的问题: 我只是自定义必需属性,为什么 ProductDescription 的错误消息不显示?

我的所有文件,请参阅以下部分:

ProductModel.cs

namespace TestCustomValidation.Models
{
    public class ProductModel
    {
        [Required(ErrorMessage = "It's for test for ProductName")]
        public string ProductName { get; set; }

        [CustomRequired(ErrorMessage = "It's for test for ProductDescription")]
        public string ProductDescription { get; set; }
    }
}

index.cshtml

...
@{Html.RenderAction("Form");}
...

_FormPartial.cshtml

@model TestCustomValidation.Models.ProductModel
@using (Html.BeginForm("FormSubmit", "Home", new { @id = "form", @name = "form" }))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)
    <table cellpadding="0" cellspacing="0">
        <tr>
            <th colspan="2" align="center">Person Details</th>
        </tr>
        <tr>
            <td>Name: </td>
            <td>
                @Html.TextBoxFor(m => m.ProductName)
            </td>
            <td>
                @Html.ValidationMessageFor(m => m.ProductName)
            </td>

        </tr>
        <tr>
            <td>Description: </td>
            <td>
                @Html.TextBoxFor(m => m.ProductDescription)
            </td>
            <td>
                @Html.ValidationMessageFor(m => m.ProductDescription)
            </td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" value="Submit" /></td>
        </tr>
    </table>
}

HomeController.cs

public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";

            return View();
        }

        public PartialViewResult Form()
        {
            ProductModel model = new ProductModel();
            return PartialView("_FormPartial", model);
        }

        [HttpPost]
        public ActionResult FormSubmit(ProductModel model)
        {
            if (ModelState.IsValid)
            {
                string name = model.ProductName;
                return RedirectToAction("About");
            }

            return PartialView("_FormPartial", model);
        }
}

CustomRequiredAttribute.cs

namespace TestCustomValidation.CustomValidation
{
    public class CustomRequiredAttribute : RequiredAttribute
    {
    }
}

感谢您提前!

1 个答案:

答案 0 :(得分:0)

我敢打赌你的页面中包含了jQuery验证,它实际上从未进入你的服务器,而是向你显示与该输入字段相关的消息作为客户端验证。