我知道我真的遲到了這裏,但這些沒有似乎相當合理了我,所以這裏是我的2美分:
public class PartialViewConverter : ViewResult
{
public ViewResultBase Res { get; set; }
public PartialViewConverter(ViewResultBase res) { Res = res; }
public override void ExecuteResult(ControllerContext context)
{
Res.ExecuteResult(context);
}
public static ViewResult Convert(ViewResultBase res)
{
return new PartialViewConverter(res);
}
}
的使用方式:
return PartialViewConverter.Convert(PartialView());
然後在您的控制器中,如果您覆蓋查看
protected override ViewResult View(string viewName, string masterName, object model)
{
//Whichever condition you like can go here
if (Request.QueryString["partial"] != null)
return PartialViewConverter.Convert(PartialView(viewName, model));
else
return base.View(viewName, masterName, model);
}
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
//This will return a partial if partial=true is passed in the querystring.
return View();
}
爲什麼不只是有方法返回不同類型取決於''IsAjaxRequest'的ActionResults':,你返回一個視圖請求時,會自動復回諧音的任何行動方法? – bzlm 2010-09-17 09:17:54
我在這一方的OP方面,我喜歡返回新的HybridViewResult()。也許命名需要一些工作。 – eglasius 2010-09-17 09:53:48