我有这个问题:
我转到如下页面:
/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/