2

我是 MVC4 的新手,请多多包涵。我正在构建一个门户,用户将在其中看到不同的小部件。让我们说小部件是一些带有标题和内容的矩形框。有什么更好的方法来实现这一点?我打算使用部分视图。然后在聚合视图上调用 Html.renderaction。这是一个不错的选择还是有更好的方法来做到这一点?

2.)此外,当小部件遇到任何异常时,我想仅在小部件区域显示自定义错误消息。我不希望将整个页面重定向到错误页面。只是矩形区域。

4

1 回答 1

1

@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() 
 {

 }
于 2013-02-23T08:00:19.160 回答