ASP.NET MVC两个相同的'控制器动作为不同目的返回不同视图

时间:2015-02-19 12:18:26

标签: asp.net-mvc-4

我有两个控制器动作,其中一个用于以标准方式返回视图,另一个返回相同视图的大块,例如,在我的应用程序中的其他地方使用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);
}

2 个答案:

答案 0 :(得分:1)

您可以查看某些条件并在其基础上返回PartialViewView,而不是创建单独的操作:

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