是否有一种方法可以将标签助手集成到MVC CodeTemplates中?

本文关键字:集成 标签 MVC CodeTemplates 方法 一种 是否 | 更新日期: 2023-09-27 18:08:26

我刚刚开始使用ASP。. NET MVC 5 (c#),并对HTML帮助程序有点困惑。

@using (Html.BeginForm("Add", "Song"))

我知道这可能会有帮助,但我觉得对于那些不了解Razor/c#的人来说,如果不适当地暴露,这将是一个陡峭的学习曲线。我也知道标签助手是可用的,喜欢我到目前为止看到的。

<form asp-action="Add" asp-controller="Song">

对我来说,这似乎更合适,因为这意味着不理解Razor语法的人将能够更容易地阅读和理解正在发生的事情,因为它与"普通"HTML更相似。话虽如此,更改每个页面以使用标记助手似乎单调且不必要。

我最近找到了CodeTemplate文件,并将它们包含在我的项目中,目的是在模板文件中添加标签助手。然而,我很快意识到大多数标签助手都需要一个特定的控制器或其他东西来填充元素属性。显然,这个Controller/whatever 将根据提示创建视图的Controller/whatever动态地改变。如果我硬编码asp-controller="Song",然后我尝试从这个CodeTemplate创建一个专辑视图,我显然会使用错误的控制器。

是否有一种方法可以访问任何控制器,链接等称为视图的动态属性?换句话说,在CodeTemplate中是否有这样做的方法,其中This是控制器/从修改的CodeTemplate构造视图的任何东西?

<form asp-action="This.Action" asp-controller="This.Controller">

例子:

如果我在所有视图的CodeTemplate中都有<form asp-action="This.Action" asp-controller="This.Controller">,然后从不同的控制器创建视图:

<<h3>歌控制器/h3>
  • 创建视图- <form asp-action="Add" asp-controller="Song">
  • 更新视图- <form asp-action="Edit" asp-controller="Song">

专辑控制器
  • 创建视图- <form asp-action="Add" asp-controller="Album">
  • 更新视图- <form asp-action="Edit" asp-controller="Album">

这可能吗?还是说我完全错了?让我知道!谢谢!

是否有一种方法可以将标签助手集成到MVC CodeTemplates中?

你可以试试我在这里找到的解决方案。

<form asp-controller="@this.ViewContext.RouteData.Values["controller"].ToString())" 
  asp-action="@this.ViewContext.RouteData.Values["action"].ToString())">