我是 MVC4 的新手,请多多包涵。我正在构建一个门户,用户将在其中看到不同的小部件。让我们说小部件是一些带有标题和内容的矩形框。有什么更好的方法来实现这一点?我打算使用部分视图。然后在聚合视图上调用 Html.renderaction。这是一个不错的选择还是有更好的方法来做到这一点?
2.)此外,当小部件遇到任何异常时,我想仅在小部件区域显示自定义错误消息。我不希望将整个页面重定向到错误页面。只是矩形区域。
我是 MVC4 的新手,请多多包涵。我正在构建一个门户,用户将在其中看到不同的小部件。让我们说小部件是一些带有标题和内容的矩形框。有什么更好的方法来实现这一点?我打算使用部分视图。然后在聚合视图上调用 Html.renderaction。这是一个不错的选择还是有更好的方法来做到这一点?
2.)此外,当小部件遇到任何异常时,我想仅在小部件区域显示自定义错误消息。我不希望将整个页面重定向到错误页面。只是矩形区域。
@Html.RenderAction
应该做这项工作,对于例外情况,try/catch 可以帮助您:
[ChildActionOnly]
public ActionResult Widget(int id) {
try
{
var widget = Repository.GetWidget(id);
return PartialView(widget);
}
catch
{
return PartialView("WidgetErrorPage");
}
}
更新:在这种情况下,您可以使用 anActionFilter
来处理异常,如 从 ActionFilter 中返回视图或在此处从 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()
{
}