使用MVC

时间:2015-09-17 22:41:54

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

我一直在尝试使用MVC的固有验证框架来显示验证错误。我正在为我的Controller使用以下代码:

[HttpPost]
        public ActionResult SaveApplication(ApplicationModel application)
        {
            if (!ModelState.IsValid)
            {                   
                return View("New",application);
            }

            ApplicationBLL.SaveApplication(application);
            return Content(string.Empty);
        }

虽然我的观点如下:

<tr>
        <td>Name</td>
        @Html.ValidationSummary(true)
        <td>@Html.TextBoxFor(m => m.Name)</td>
        <td>@Html.ValidationMessageFor(m => m.Name, "Name is required")</td>
    </tr>

以下是模型类的外观:

public class  ApplicationModel
    {
        public int ApplicationId { get; set; }

        public string ApplicationNumber { get; set; }

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

        public DateTime EventDate { get; set; }

        public string EventAddress { get; set; }
}

我的模型在name属性上有 [Required] 验证,当我将调试器放在我的控制器上时,它识别出ModelState无效并返回到视图但我没有看到任何我页面上的错误。我可能会遗漏一些非常微不足道的东西,因为这是我第一次使用MVC的验证框架。

我想补充的一点是,我使用 Ajax帖子调用Controller 这会导致这种异常吗?

2 个答案:

答案 0 :(得分:1)

<td>@Html.ValidationMessageFor(m => m.Name, "Name is required")</td>

此辅助方法生成带有以下属性的范围:

data-valmsg-replace="false"

表示您在字段下方看到静态错误消息,但您无法使用模型中定义的错误消息更改该字段。再次,您会在您的字段下看到一些静态错误消息。 如果@stephen muecke的解决方案有效,则意味着您的问题不是将ErrorMessage添加到错误的位置。我在代码和@ stephen的答案之间看到的唯一区别是

return View("New",application);

更改为

return View(application);

这意味着您可能从行动中返回了错误的观点。

答案 1 :(得分:0)

试试这个,

在您的操作中添加模型错误

methodName := "Method1"

c := &Client{id: "foo"}
m := &Method1{record: "bar"}

args := []reflect.Value{reflect.ValueOf(m)}
reflect.ValueOf(c).MethodByName(methodName).Call(args)
fmt.Printf("%s record is %s", methodName, m.record)

使用此功能在视图中显示

 ModelState.AddModelError("keyName","Error Message");