我有两个控制器动作,其中一个用于以标准方式返回视图,另一个返回相同视图的大块,例如,在我的应用程序中的其他地方使用javascript模式。我的问题是这样做的最佳实践方法是什么,或者我的方式是否正常。也许我应该将重复的代码移出一个辅助方法?
(注意创建视图里面有_Create部分)
现在我有:
public ActionResult Create(int someParamater)
{
//Lots of code
return View(model);
}
public PartialViewResult GetCreatePartial(int someParameter)
{
//All of the same code as in Create
return PartialView("_Create", model);
}
答案 0 :(得分:1)
您可以查看某些条件并在其基础上返回PartialView
或View
,而不是创建单独的操作:
public ActionResult Create(int someParamater)
{
if(Request.IsAjaxRequest()) // check here if ajax call return partial
return PartialView("_Create", model);
else
return View(model); // otherwise return Full View
}
答案 1 :(得分:1)
如果您的GetCreatePartial
方法确实可以独立调用,并且someParameter
参数也可以在视图中使用,则可以使用Html.Action()
在父视图中调用它。
例如(Create.cshtml
):
<div>
<span>some parent view stuff</span>
</div>
<div class="partial-wrapper">
@Html.Action("GetCreatePartial", new { someParameter = Model.someParameter })
</div>
请参阅Html.Action