在ASP.NET MVC2中,如何从母版页调用控制器方法?例如,我想在母版中包含一些概述数据:

+--------------------------------------+
| Logo                      Welcome xyz|
+--------------------------------------+
| total sales this month $999          |
+--------------------------------------+
| Home | Sales | Import | Export (menu)|
+--------------------------------------+


我在Sales控制器内部有此方法:

public ActionResult TotalSalesThisMonth()
{
    var totalSalesModel = SalesService.GetTotalSalesThisMonth()
    return View(totalSalesModel);
}


如何从母版内部调用该视图,以便将其显示在每个页面上?

最佳答案

您可以使用Html.Action or Html.RenderAction帮助器。例如,您可以将以下内容放在母版页上:

<%= Html.Action("TotalSalesThisMonth", "SomeController") %>


这将执行控制器操作,呈现视图,并将生成的HTML插入母版页中的指定位置。您还可以通过使用[ChildActionOnly]属性装饰该操作,以限制该操作仅用作子操作:

[ChildActionOnly]
public ActionResult TotalSalesThisMonth()
{
    var totalSalesModel = SalesService.GetTotalSalesThisMonth()
    return View(totalSalesModel);
}


最后,如果您想在控制器动作内部测试它是作为普通动作还是作为子动作调用,则可以执行以下操作:

public ActionResult TotalSalesThisMonth()
{
    var totalSalesModel = SalesService.GetTotalSalesThisMonth()
    if (ControllerContext.IsChildAction)
    {
        return View("foo", totalSalesModel);
    }
    return View("bar", totalSalesModel);
}

关于c# - ASP.NET从母版页调用 Controller 方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5049942/

10-09 18:38