ASP.NET MVC 4 - 门户网站

时间:2013-02-23 07:29:04

标签: asp.net-mvc asp.net-mvc-4

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

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

1 个答案:

答案 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() 
 {

 }