我知道我真的迟到了这里,但这些没有似乎相当合理了我,所以这里是我的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