ASP.net MVC 5从控制器加载HTML.Partial而不是在cshtml页面加载

时间:2017-04-04 13:17:50

标签: c# asp.net-mvc razor partial-views

MVC新手,所以这里。

我目前正在 Index.cshtml页面上加载 HTML.Partial ,如下所示:

@Html.Partial("~/Views/Switchb/editPerson.cshtml")

但是,我需要根据当前用户类别编号在控制器中进行自定义。

举个例子,如果用户的类别为3,那么我需要这样做:

@Html.Partial("~/Views/Switchb/3.cshtml")

控制器中的"代码后面是否有任何类型的调用?我可以使用它来执行此操作?或者我只需要将代码放在cshtml页面中并通过控制器将其类别编号传递给cshtml页面?

2 个答案:

答案 0 :(得分:3)

您可以从控制器操作渲染局部视图。您可以将视图名称作为字符串传递。

public ActionResult Switchb(string categoryNumber) {
    var viewModel = new MyViewModel { CategoryNubmer = categoryNumber };
    // additional processing, backend calls, formatting ....
    return PartialView(categoryNumber, viewModel);
}

从View:

调用此操作
@{
    var routeValues = new RouteValueDictionary(new {
        categoryNumber= "3",
    });
    Html.RenderAction("Switchb", "MyController", routeValues);
}

答案 1 :(得分:1)

确定控制器中的类别(通过url参数,从数据库或其他任何方面),然后将该值设置为视图模型的属性。然后在您的代码行中,您可以执行此操作

@Html.Partial("~/Views/Switchb/" + Model.Category + ".cshtml");