Asp.net mvc 3 ModelState.AddModelError未显示在我的视图中

Asp.net mvc 3 ModelState.AddModelError未显示在我的视图中,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我有下面的视图,它创建了10个ajax.beginform,但是我面临的问题是,如果在创建对象的过程中发生错误,那么ModelState.AddModelError将不会显示在视图上,尽管我已经设置了@Html.ValidationSummary(true) 视图如下所示 @model Medical.Models.VisitLabResult @for (int item = 0; item < 10; item++) { <tr id = @item> @

我有下面的视图,它创建了10个ajax.beginform,但是我面临的问题是,如果在创建对象的过程中发生错误,那么ModelState.AddModelError将不会显示在视图上,尽管我已经设置了
@Html.ValidationSummary(true)
视图如下所示

@model Medical.Models.VisitLabResult

@for (int item = 0; item < 10; item++)
{
    <tr id = @item>
    @using (Ajax.BeginForm("CreateAll", "VisitLabResult", new AjaxOptions
    {
        HttpMethod = "Post",
        UpdateTargetId = item.ToString() + "td",
        InsertionMode = InsertionMode.Replace,
        LoadingElementId = "progress2",
        OnSuccess = string.Format(
            "disableform({0})",
            Json.Encode(item)),
    }))
    {  
        @Html.ValidationSummary(true)

        @Html.AntiForgeryToken()
        <td>
            @Html.DropDownList("LabTestID", String.Empty)
            @Html.ValidationMessageFor(model => model.LabTestID)
        </td>
        <td>
            @Html.EditorFor(model => model.Result)
            @Html.ValidationMessageFor(model => model.Result)
        </td>

        <td>
            @Html.EditorFor(model => model.DateTaken)
            @Html.ValidationMessageFor(model => model.DateTaken)
        </td>

        <td>
            @Html.EditorFor(model => model.Comment)
            @Html.ValidationMessageFor(model => model.Comment)
        </td>

        <td>
            <input type="submit" value="Create" />
        </td>

        <td id = @(item.ToString() + "td")>
        </td>
    }
    </tr>
    }
</table>
那么如何在视图上显示ModelState.addmodeleror。
我敦促您更改
尝试{}catch(){}

首先检查给定id是否存在访问 如果是这样,只需返回带有添加的模型错误的模型

    if (visitExists)
    {
         ModelState.AddModelError("CustomError", "The Same test Type might have been already created,, go back to the Visit page to see the avilalbe Lab Tests");
         return View(vlr);    
    }
    //Other code here
将AddModelError更改为

ModelState.AddModelError("CustomError", "The Same test Type might have been already created,, go back to the Visit page to see the avilalbe Lab Tests");
在您看来,只需添加一个

@Html.ValidationMessage("CustomError")

然后,当您返回模型时,错误将显示在您放置@Html.ValidationMessage…

@Html.ValidationSummary(true)
仅显示有关模型属性的错误消息,如果您还想显示添加的消息,请添加

ModelState.AddModelError(
    "CustomError", 
    "The Same test Type might have been already created, go back to the Visit page to see the avilalbe Lab Tests"); 
你需要设置
@Html.ValidationSummary(false)

如果需要在输入字段附近显示验证消息,则需要设置
@Html.ValidationSummary(true)
,并遵循Syneryx建议的步骤,您可以使用视图中的from
ViewData
字典访问
ModelState
数据

例如:

在行动中:

ModelState.AddModelError("CustomError", "Error 1");
ModelState.AddModelError("CustomError", "Error 2");
要获取“错误1”消息,请执行以下操作:


如何处理包装错误消息的html?您只希望HTML(例如引导警报)在出现错误时显示。
ModelState.AddModelError("CustomError", "Error 1");
ModelState.AddModelError("CustomError", "Error 2");
ViewData.ModelState["CustomError"].Errors[0].ErrorMessage