2012-05-24 58 views
1

我有一个观点有些剃刀代码,通过应该路由到我的模型中的不同部分:意外HTML从剃刀

@Html.ActionLink("Edit", "Edit", "Journal", new { id = item.JOURNAL.REF_ID }) 

,但是当我看着被emmitted的HTML,它是不不反映我写的内容:

<a href="/Reference/Edit?Length=7" id="25750">Edit</a> 

我该如何阻止这种情况的发生?

回答

4

这是因为您使用了错误的超载。它应该是这样的:

@Html.ActionLink("Edit", "Edit", "Journal", new { id = item.JOURNAL.REF_ID }, null) 

让我们来看看为什么使用错误的过载。让我们来分解一下你写的内容:

@Html.ActionLink(
    "Edit",        // linkText 
    "Edit",        // actionName 
    "Journal",       // routeValues 
    new { id = item.JOURNAL.REF_ID }  // htmlAttributes 
) 

看到问题了吗?

现在,让我们打破了正确的方法:

@Html.ActionLink(
    "Edit",        // linkText 
    "Edit",        // actionName 
    "Journal",       // controllerName 
    new { id = item.JOURNAL.REF_ID }, // routeValues 
    null         // htmlAttributes 
) 

看到区别?

我会建议你仔细阅读文档和帮助ActionLink帮助different available overloads以及其参数的确切意义。

+0

你说得对 - 其实我应该RTFM!我认为目前我只是想让事情奏效,阅读教程和观看视频,但有时我会错过更好的细节。 – Vidar