@ Html.ValidationMessageFor不工作

时间:2012-01-04 22:52:33

标签: c# asp.net asp.net-mvc-3 razor

大家好我已经看过谷歌,雅虎,无法找到答案,为什么它是我的'@Html.ValidationMessageFor不起作用。当我运行应用程序时没有任何反应它允许输入所有内容。当我尝试编辑下面编辑视图中的项目时,它也会崩溃。我有以下内容:

<div class="editor-label">
       @* @Html.LabelFor(model => model.Posted)*@
    </div>
    <div class="editor-field">
        @Html.HiddenFor(model => model.Posted, Model.Posted = DateTime.Now)
        @Html.ValidationMessageFor(model => model.sendinghome)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Cartypes)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Cartypes)
        @Html.ValidationMessageFor(model => model.Cartypes)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.RegNum)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.RegNum)
        @Html.ValidationMessageFor(model => model.RegNum)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Regprice)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Image)
        @Html.ValidationMessageFor(model => model.Regprice)
    </div>

2 个答案:

答案 0 :(得分:30)

以下是验证的工作原理。

假设您有以下型号:

public class MyModel {
    [Required]
    public string MyProperty { get; set; }
}

请注意Required属性,它是一个数据注释属性,指定MyProperty是必填字段。

MyModel由以下视图( MyView.cshtml )使用:

@model MyNamespace.MyModel

@using (Html.BeginForm("MyAction", "MyController")) {
    @Html.LabelFor(m => m.MyProperty)
    @Html.TextBoxFor(m => m.MyProperty)
    @Html.ValidationMessageFor(m => m.MyProperty)

    <input type="submit" value="Click me">
}

然后,当此表单发布到MyAction的{​​{1}}操作时,将执行模型验证。您需要做的是检查您的模型是否有效。 可以使用MyController属性来完成。

ModelState.IsValid

如果验证失败,将使用[HttpPost] public ActionResult MyAction(MyModel model) { if (ModelState.IsValid) { // save to db, for instance return RedirectToAction("AnotherAction"); } // model is not valid return View("MyView", model); } 对象中存在的不同错误再次呈现视图。这些错误将由ModelState帮助程序使用和显示。

答案 1 :(得分:1)

正确地说,Bertrand解释正确,您也可以使用jquery验证并消除对浏览器验证服务器的调用。 (asp.net mvc负责自动验证模型上的规则)