我有这个问题:

我转到如下页面:

/Auction/Details/37


这将调用此操作方法:

public ActionResult Details(int id)


此方法中的特定行是:

return View("DetailsLub", auction);


此视图包含以下行:

@Html.Action("BidOnAuction", new { auctionId = Model.Id })


哪个调用此操作方法:

public PartialViewResult BidOnAuction(int auctionId)


到目前为止,一切都很好?

现在,我在BidOnAuction视图中有一个表单,其中有一个按钮。当我单击此按钮时,将调用此操作方法:

[HttpPost]
public ActionResult BidOnAuction(BidOnAuctionViewModel model)


此操作方法具有一条带有以下几行的catch语句:

ModelState.AddModelError(string.Empty, operation + @" Failure: " + message);
return RedirectToAction("Details", new { id = model.AuctionId });


现在,DetailsLUB视图和BidOnAction视图都包含以下行:

@ Html.ValidationSummary(true)

但是,问题是,屏幕上什么也没打印。我究竟做错了什么?

最佳答案

这行代码

return RedirectToAction("Details", new { id = model.AuctionId });


返回RedirectResult类的实例。这通常用于重定向,并且不呈现视图。如果要使用@Html.Action将子操作呈现到父视图中,则需要从该子操作中返回视图,而不是RedirectResult。而且即使没有子操作,该RedirectResult也不起作用。返回RedirectResult会导致浏览器对该动作发出全新的所有新请求。无论如何,模型状态都会丢失。你应该做类似的事情

try
{
    //some actions
    return RedirectResult("Details", new { id = model.AuctionId });
}
catch
{
    ModelState.AddModelError(string.Empty, operation + @" Failure: " + message);
    return View("Details", new { id = model.AuctionId });
}

关于c# - ValidationSummary不与部分 View 一起出现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8986634/

10-13 00:00