Asp.net core 如何从.net core中的部分视图访问控制器?
下面是一个局部视图,可以显示在许多页面中,我使用@Html.partial将其插入页面。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
现在我想更改控制器中部分视图的文本。
以下是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”)
将不会调用操作方法,而是呈现部分