Asp.net core 如何从.net core中的部分视图访问控制器?

Asp.net core 如何从.net core中的部分视图访问控制器?,asp.net-core,.net-core,asp.net-core-mvc,asp.net-core-2.0,Asp.net Core,.net Core,Asp.net Core Mvc,Asp.net Core 2.0,下面是一个局部视图,可以显示在许多页面中,我使用@Html.partial将其插入页面。 现在我想更改控制器中部分视图的文本。 以下是index.cshtml的代码: @{ ViewData["Title"] = "Home Page"; } @Html.Partial("Aside.cshtml") 以下是HomeController的代码: public class HomeController : Controller { public IActionResul

下面是一个局部视图,可以显示在许多页面中,我使用@Html.partial将其插入页面。

现在我想更改控制器中部分视图的文本。

以下是index.cshtml的代码:

@{
    ViewData["Title"] = "Home Page";
}

@Html.Partial("Aside.cshtml")
以下是HomeController的代码:

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }

public IActionResult About()
{
    ViewData["Message"] = "Your application description page.";

    return View();
}

public IActionResult Contact()
{
    ViewData["Message"] = "Your contact page.";

    return View();
}

public IActionResult Aside()
{
    return View();
}

public IActionResult Error()
{
    return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
这是我的项目的文件列表:

当项目运行并加载index.cshtml时,我发现IActionResult Aside()没有运行,但IActionResult index()已经运行。

正如我在这个问题的顶部所说的,我想在controller中更改部分视图(aside.cshtml)的文本,但是现在我不能更改,因为IActionResult aside()没有运行。

为什么它没有运行?我如何解决这个问题?


请帮助我,谢谢。

以这种方式构建的
IActionResult Aside()
仅在请求/Aside url时才会运行,但这样做会使用分部,就像它是完整视图一样。如果aside.chstml是partial,则主控制器不应具有
IActionResult aside()
操作方法,因为partial没有操作方法

如果希望控制器影响分部,那么一种方法是让控制器在上下文项集合中设置一个值,并通过将当前上下文注入分部,让控制器在上下文项集合中部分访问该值。但是一些开发人员可能会认为这有点混乱,并且希望控制器不修改部分


或者,这可能是最好的方法,您可以向视图提供数据(例如,使用视图模型),然后让视图将该数据传递给partial
@Html.partial(“Aside.cshtml”,someData)
。您可以在此处了解有关此方法的更多信息:

更改部分视图的文本是什么意思
@Html.Partial(“Aside.cshtml”)
将不会调用操作方法,而是呈现部分