我是MVC4的新手,请耐心等待。我正在构建一个门户网站,用户将在其中显示不同的小部件。让我们说小部件是一些带有标题和内容的矩形框。实现这个更好的方法是什么?我打算使用部分视图。然后在聚合视图上调用Html.renderaction。这是一个不错的选择还是有更好的方法呢?
2.)此外,当小部件遇到任何异常时,我想在小部件区域显示自定义错误消息。我不想将整个页面重定向到错误页面。只是矩形区域。
答案 0 :(得分:1)
@Html.RenderAction
应该做的工作,对于try / catch可以帮助你的例外:
[ChildActionOnly]
public ActionResult Widget(int id) {
try
{
var widget = Repository.GetWidget(id);
return PartialView(widget);
}
catch
{
return PartialView("WidgetErrorPage");
}
}
<强>更新强>:
在这种情况下,您可以使用ActionFilter
来处理异常,例如此处Return View from ActionFilter或此处Returning a view with it's model from an ActionFilterAttribute:
public class WidGetHandleException : ActionFilterAttribute
{
protected override void OnException(ExceptionContext filterContext)
{
filterContext.ExceptionHandled = true;
filterContext.Result = new PartialViewResult
{
ViewName = "WidgetErrorPage",
ViewData = filterContext.Controller.ViewData,
TempData = filterContext.Controller.TempData,
};
}
}
然后装饰所有的小部件动作,如下所示:
[ChildActionOnly]
[WidGetHandleException]
public ActionResult Widget()
{
}