@Html.ValidationMessageFor在尝试编辑项目时崩溃

本文关键字:项目 崩溃 编辑 ValidationMessageFor @Html | 更新日期: 2023-09-27 18:19:32

为什么我的@Html.ValidationMessageFo不工作?当我运行应用程序时,什么都不会发生,它允许输入所有内容。当我试图在下面的编辑视图中编辑项目时,它也会崩溃。我有以下内容:

<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>

@Html.ValidationMessageFor在尝试编辑项目时崩溃

以下是验证的工作原理。

假设您有以下型号:

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">
}

然后,当此表单发布到MyControllerMyAction操作时,将执行对模型的验证。您要做的是检查您的模型是否有效。这可以使用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对象中存在的不同错误再次渲染视图。ValidationMessageFor助手将使用并显示这些错误。

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