Asp.net mvc ASP.NET MVC在部分视图中通过ModelState.AddModelError显示错误

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

在使用MVC4的出租车预订系统中,我使用Home->Index中的部分视图来显示QuickBook部分。在布局中,我使用以下代码渲染局部视图:

    @{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();