C# MVC2 HTML链接-这是正确的,还是有更好的方法?

C# MVC2 HTML链接-这是正确的,还是有更好的方法?,c#,asp.net-mvc-2,hyperlink,C#,Asp.net Mvc 2,Hyperlink,我已经一年多没有做过MVC2(或者任何MVC),虽然这很有效,但我想确保这是最好的方式 我有一个“启动”页面,允许用户选择他们想要的工作;接口、事件、参数或任务。HTML是: <a href="/Interfaces/Index"> <div id="homeInterfaces" class="homeLinks"> <h1>Interfaces</h1> <h2>Create, Edit or

我已经一年多没有做过MVC2(或者任何MVC),虽然这很有效,但我想确保这是最好的方式

我有一个“启动”页面,允许用户选择他们想要的工作;接口、事件、参数或任务。HTML是:

<a href="/Interfaces/Index">
    <div id="homeInterfaces" class="homeLinks">
        <h1>Interfaces</h1>
        <h2>Create, Edit or Delete Interfaces</h2>
    </div>
</a>
<a href="/Tasks/Index">
    <div id="homeTasks" class="homeLinks">
        <h1>Tasks</h1>
        <h2>Create, Edit or Delete Tasks</h2>
    </div>
</a>
<a href="/Parameters/Index">
    <div id="homeParameters" class="homeLinks">
        <h1>Parameters</h1>
        <h2>Create, Edit or Delete Parameters</h2>
    </div>
</a>
<a href="/Events/Index">
    <div id="homeEvents" class="homeLinks">
        <h1>Events</h1>
        <h2>Create, Edit or Delete Events</h2>
    </div>
</a>


链接可以正常工作并转到相应的页面,但无论出于何种原因,我不确定这是否是正确的方式。每个都有控制器,每个都有适当的文件夹和索引视图。我不认为我应该使用Html.ActionLink,但也许我还应该使用其他东西。有什么想法吗?谢谢。

是的,您应该使用助手来完成这些任务。这将确保您生成的链接使用适当的路由,如果您对URL进行任何处理或部署到非根路径(即
/
),这将使您今后的生活更加轻松

在您的情况下,最简单的解决方案是将URL替换为
@URL.Action
。我会在
Html.ActionLink
上使用它,因为
Html.ActionLink
不允许您轻松链接比简单文本(例如,您的Html)更复杂的内容


如果你不使用剃须刀,先换用那个。这是值得的。或者删除
@
符号并添加一些


正如@MichalFran所指出的,如果它现在起作用,你可以在将来开始遵循这个建议,并在需要的时候重新审视你已经做过的事情。

这个答案不是独立的。我把它作为一个补充,我喜欢

我想补充的另一个“想法”是。我非常喜欢它,因为它可以帮助你摆脱
@Url.Action
@Html.Action
中更多的“魔串”。例如,以Michael的示例代码为例:

<a href="@Url.Action("Index", "Interfaces")">
    ...

我不知道为什么更多的人不发表关于这个的文章

我不知道为什么这可能是错误的。不要再担心什么是对的,只需要创造产品,如果你担心什么,就要问一个具体的问题。你能改进你的标题,让它对其他人更有用吗?现在是“这是正确的还是有更好的方法?”这并没有给未来的用户任何线索,这个问题是否会帮助他们。@RaymondChen-这更好吗?+1我还更喜欢在href属性中使用Url.Action,而不是Html.ActionLink。更清楚呈现的HTML输出将是什么样子。@danludwig感谢您的评论,这促使我修复
Url。ActionLink
谢谢,这似乎更合适。我得调查一下剃须刀,看看它有什么优点。再次感谢。+1我也喜欢T4MVC的东西。我有点惊讶它没有内置到MVC中(还没有?)
<a href="@Url.Action("Index", "Interfaces")">
    ...
<a href="@Url.Action(MVC.Interfaces.Index())">
public ActionResult ById(int entityId) { ... } 

<a href="@Url.Action(MVC.Interfaces.Index(Model.EntityId))">
    ...