这是我的行动:
public virtual ActionResult DeleteClass(int id)
{
var Model = service.AllClasses();
MergeModelState(service.Exceptions); // Please see below description
return RedirectToAction("Index",Classes);
}
修改 我的观看代码在这里:
@using Scripts = System.Web.Optimization.Scripts
@model List<Demo.CustomTypes.Class>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<div class="row">
<div class="col-md-12">
<div class="table-responsive">
@if (Model != null && Model.Count > 0)
{
<table class="table table-hover table-striped">
<tr>
<td>Name</td>
<td>Location</td>
<td>Teacher</td>
<td></td>
<td></td>
</tr>
@foreach (var itm in Model)
{
<tr>
<td>@Html.ActionLink(@itm.Name,MVC.CodeTest.Students().AddRouteValue("id",@itm.ClassID))</td>
<td>@itm.Location</td>
<td>@itm.Teacher</td>
<td>
@Html.ActionLink("Edit",MVC.CodeTest.EditClass().AddRouteValue("id",itm.ClassID))
<br/>
</td>
<td>
@Html.ActionLink("Delete",MVC.CodeTest.DeleteClass().AddRouteValue("id",itm.ClassID))
<br/>
</td>
</tr>
}
</table>
<div class="col-md-12">
@Html.ActionLink("Add",MVC.CodeTest.AddClass())
<br/>
</div>
}
</div>
</div>
</div>
}
在操作中我使用MergeModelState添加错误(字符串键,字符串消息),然后我想在视图中显示它但在视图中我没有收到任何错误/验证消息。在Immidiate Windows中我可以看到在ModelState中添加了错误。请帮忙。
编辑2:
这是我在ModelState中添加错误的方法。它在BaseController类中,我的控制器正在吸收这个类。
public class BaseContoller : Controller
{
public void MergeModelState(List<ExceptionPairs> exceptions )
{
foreach (var exception in exceptions)
{
ModelState.AddModelError(string.Empty, exception.Message);
}
}
}
答案 0 :(得分:2)
您必须在表单元素中包含@Html.ValidationSummary()
才能显示它。请参阅MVC源代码中的以下片段(无形式,无消息!)
private static MvcHtmlString ValidationMessageHelper(this HtmlHelper htmlHelper, ModelMetadata modelMetadata, string expression, string validationMessage, IDictionary<string, object> htmlAttributes, string tag)
{
string modelName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(expression);
FormContext formContext = htmlHelper.ViewContext.GetFormContextForClientValidation();
if (!htmlHelper.ViewData.ModelState.ContainsKey(modelName) && formContext == null)
{
return null;
}
答案 1 :(得分:0)
模型错误仅显示当前控制器的视图。
即 - 我们无法使用return RedirectToAction("Index",Classes);
你必须使用return view (model);
然后只有视图显示模型中的错误。