jga*_*fin 2 ajax asp.net-mvc partial razor asp.net-mvc-3
我试图找出当通过ajax发出请求时如何自动将视图呈现为部分(无母版页).
我想避免的是在每个可以返回ajax的控制器方法中使用以下代码(因为那不是很干):
return Request.IsAjaxRequest() ? PartialView(model) : View(model)
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是在方法中将检查添加到我的基本控制器中View.但是view方法返回一个View(PartialView不继承).这样就失败了.
我的下一次尝试是尝试在我的自定义剃刀视图引擎中进行检查,如果它是ajax请求,则简单地删除母版页.但那也失败了.
我能做的是创建一个ViewOrPartial包含检查并相应返回结果的新方法.
你会怎么做的?
如何放置以下内容:
@{
Layout = !Request.IsAjaxRequest() ? "~/Views/Shared/_Layout.cshtml" : null;
}
Run Code Online (Sandbox Code Playgroud)
在您~/Views/_ViewStart.cshtml和您的控制器操作中只需返回一个视图:
return View(model);
Run Code Online (Sandbox Code Playgroud)
所有剃刀视图都使用_ViewStart.cshtml.这是指定母版页的位置.因此,通过进行此更改,如果请求不是AJAX请求,则所有视图将自动仅有条件地应用母版页.很干.