我有这个问题:
我转到如下页面:
/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(真)
但是,问题是没有任何东西被打印到屏幕上。我做错了什么?
答案 0 :(得分:2)
InOrder在页面上获取验证消息,您需要使用Model返回视图,因为模型中包含Model State,如下所示:
return View(Model);
这将返回带有验证摘要的模型BidOnAuction
。
答案 1 :(得分:1)
这行代码
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 });
}
答案 2 :(得分:1)
您无法重定向到新操作,并希望模型状态存在。
如果modelState无效则返回(使用View(model)) 其他 重定向到详细信息。
如果您需要详细信息视图中的错误信息,您可以将其添加到TempData或作为可选参数传递。