当前位置:  开发笔记 > 后端 > 正文

ASP.NET MVC HTML助手被高估了吗?

如何解决《ASP.NETMVCHTML助手被高估了吗?》经验,为你挑选了3个好方法。

我很可能没有明白这一点,但我真的无法弄清楚ASP.NET MVC的HTML帮助程序如何帮助我.这是一个样本: -

HTML:

Click Me

HTML助手:

<%= Html.ActionLink("Click me", "ActionName", null, new {target="blank"}) %>

我的眼睛更容易阅读HTML,使用HTML帮助程序似乎是违反直觉的.

看看以下参数:

很多人(甚至新手)都知道如何阅读HTML.HTML Helper语法很容易混淆.

在许多情况下,您需要更多地键入编写HTML"帮助器",然后您需要编写实际的HTML.

HTML Helper无论如何都会发出真正的HTML,为什么不直接编写HTML呢?

编写HTML可以让您更好地控制语法和标准.您可以使其符合您想要的任何HTML标准.

是否有任何特殊的令人信服的理由,我还没有理解(因为我在MVC中自学成才,可能存在差距)应该让我更喜欢HTML助手?

或者他们只是编码噪音?



1> Mehrdad Afsh..:

直接使用标记的主要原因是您不希望在应用程序中对URL进行硬编码.该Html.ActionLink方法将抽象出URL生成,您将指定控制器,操作和其他参数.

所以,基本上,你在问题中发布的两条线并不是真正等效的.您应该考虑将动态URL生成代码添加到标记,以使它们在功能上等效.除此之外,如果你直接输出HTML,你必须非常小心HTML编码的东西.Html.ActionLink也会为你做这份工作.


使用ActionLink生成的URL也遵循您在Global.asax中设置的路由.
Youu仍然可以使用
标签并通过在href属性中执行<%= Model.LinkUrl%>或<%= MyUrlProvider.Someurl%>来保持URL动态(非硬编码).
@Cyril:如果您重新组织您的网站以便有另一个级别,例如"/ company/home/login",该怎么办?您必须手动完成并更改链接,而不是在一个集中位置.
@Cyril:如果URL包含一些参数怎么办?例如,SO为每个问题生成动态URL.您无法对其进行硬编码.@Alex:不要忘记清理输入的必要性,否则你很容易受到XSS攻击.
这些都没有解释为什么`
Link 在某种程度上不如使用`ActionLink`.

2> user161433..:

假设您在URL中有许多查询参数,例如

site.com?a=1&b=2&c=3&d=4&e=1&f=1

<%= Html.ActionLink("Click me", "ActionName", null, new {a=1, b=2, c=3, d=4, e=1, f=1}) %>

actionlink可以为您构建此URL.如果您没有帮助程序,则必须手动将密钥和值添加到URL.这真是一种痛苦.URL帮助程序也可以匹配URL路由.



3> mxmissile..:

更好的是,使用MvcContrib并抛弃容易出错的"魔术字符串"并用lambdas替换它们.

<%= Html.ActionLink(x => x.ActionName() ,"Click me",new {target="blank"}) %>

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有