Asp.net mvc ASP.NET MVC在部分视图中通过ModelState.AddModelError显示错误
在使用MVC4的出租车预订系统中,我使用Home->Index中的部分视图来显示QuickBook部分。在布局中,我使用以下代码渲染局部视图:Asp.net mvc ASP.NET MVC在部分视图中通过ModelState.AddModelError显示错误,asp.net-mvc,Asp.net Mvc,在使用MVC4的出租车预订系统中,我使用Home->Index中的部分视图来显示QuickBook部分。在布局中,我使用以下代码渲染局部视图: @{Html.RenderAction("CategoryMenu", "Search");} SearchController的CategoryMenu操作是: [ChildActionOnly] public ActionResult CategoryMenu() { var searches = n
@{Html.RenderAction("CategoryMenu", "Search");}
SearchController的CategoryMenu操作是:
[ChildActionOnly]
public ActionResult CategoryMenu()
{
var searches = new QuickSearch();
return PartialView(searches);
}
QuickSearch模型是:
public class QuickSearch
{
public int CatId { get; set; }
[DisplayName("Pickup date")]
[Required(ErrorMessage = "Pickup Date is required.")]
public string PickupDate { get; set; }
[DisplayName("Cab Type")]
[Required(ErrorMessage = "Category is required.")]
public int CabCategory{ get; set; }
public static IEnumerable<Category> Categories = new List<Category> {
new Category {
CategoryId = 1,
Name = "Economy"
},
new Category {
CategoryId = 2,
Name = "Midsize"
},
/*Other categories*/
};
}
但是,整个CategoryMenu视图显示的是错误消息,而不是应该显示在主索引的部分视图中的错误消息。任何帮助都将不胜感激。这是因为您仅在出错后显示视图。你的密码是-
if (!AppHelper.CheckDate(model.PickupDate))
{
ModelState.AddModelError("", "Date cannot be before the current date.");
return PartialView("CategoryMenu");
}
将错误添加到ModelState是正常的。但返回部分不是。您只返回视图,这就是它显示视图的原因
如果只想显示错误而不想显示视图,则只返回错误-
return Content("Date cannot be before the current date.")
b如果要显示包含错误的视图,请尝试传递ModelsState,以便与视图一起正确渲染错误-
return PartialView("CategoryMenu", model);
c如果您在父视图中显示错误,并且不希望呈现此部分视图中的错误或任何内容,请尝试返回空结果-
return new EmptyResult();
您将验证摘要放在哪里了?父视图。?CategoryMenu.cshtml文件中的否为:@Html.validationSummaryTrue您可以发布您的CategoryMenu.cshtml吗?每当用户使用“return RedirectToActionIndex,home,model;”选择较早的日期时,我都可以使用部分视图显示主页。这意味着用户不能提前预订出租车。但是,我无法显示错误消息。我在SearchByDate操作中尝试了'ModelState.AddModelError'和ViewBag.ErrorMessage。在主索引和部分视图中,我尝试将错误消息显示为“@Html.ValidationSummarytrue”和“@ViewBag.ErrorMessage;”。您可能想尝试这样传递viewdata以在局部视图中显示错误-
return new EmptyResult();