asp.net-mvc-3 - 使用 MVC HTML 助手(如 ActionLink、BeginForm、TextBox 等)代替原生 HTML 标签有什么好处?

标签 asp.net-mvc-3 razor

在对不同问题的 SO 响应中,用户表示它允许您避免将路由值硬编码到 html 链接标签中,但这实际上并不有效,因为您必须将 Controller 、 Action 、区域等放入字符串,因此您仍然对路由值进行硬编码。

这怎么样:

@Html.ActionLink(linkText: "MyLink", actionName: "MyAction", controllerName: "MyController", new { id = @myId }, new { area = "SomeArea"})

比这更好:
<a href='/SomeArea/MyController/MyAction/myId'>MyLink</a>

最佳答案

您的观察仅在 (a) 您严格使用默认路由格式和 (b) 如果您的应用程序始终安装在站点的根目录下时才成立。如果你不做前者(比如创建一个快捷路由/help,它会进入 Home Controller 和 Help Action ,然后通过引入一个具有更多 Action 的 Help Controller 来改变它,那么你需要更新你所有的硬编码的 anchor 标记。更好的替代方法是使用带有路由名称和可选的其他参数的 RouteLink 助手。

关于后者,我通常在大多数临时部署中使用单个服务器,并且应用程序并不位于站点根目录中,而是位于子目录中。生产部署是混合的,但许多应用程序安装在站点根目录下。使用助手允许我在开发过程中忽略差异,因为助手在所有情况下都会正确构建相对于当前站点的 url。这非常有用,我什至通过 UrlHelper 将它用于脚本、css 文件、图像等,以确保为这些指定的任何路径不会在暂存和生产之间中断。

关于asp.net-mvc-3 - 使用 MVC HTML 助手(如 ActionLink、BeginForm、TextBox 等)代替原生 HTML 标签有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9114815/

相关文章:

c# - 强制 EditorFor 在 View 中使用类名作为输入项的前缀?

asp.net-mvc - 如何让 ASP.NET MVC 遵守我的 customErrors 设置?

c# - Asp.net MVC3 Razor View 引擎,使用 "Multiline @:"转义几行文本?

c# - 将参数发送到操作方法

unit-testing - 没有字符串的单元测试 MVC3 Razor 助手/ View

ajax - jQuery .append(html) 命令附加错误

asp.net-mvc - 将 Html.DropDownList 与静态项绑定(bind)

asp.net-mvc-3 - 无法在 HttpStatusCodeResult 中指定 StatusMessage

javascript - 将 JS 函数绑定(bind)到 razor 文件中另一个脚本文件中的复选框

asp.net-mvc - 如何确定编辑器模板中的模型数组索引