如何将CSS类名添加到ASP.NET MVC 3 Url.Action链接?

Dan*_*sen 4 asp.net-mvc asp.net-mvc-3

在ASP.MVC 3或4(使用Razor)中,如何将CSS类应用于Url.Action()辅助方法?可能吗?

期望的结果:

<a href="home\index?page=2" class="FOO">BAR</a>
Run Code Online (Sandbox Code Playgroud)

我已经走到这一步了:

@Url.Action("Index", "Home", new { page })
Run Code Online (Sandbox Code Playgroud)

更新:谢谢大家.我犯了几个错误,我应该为未来的读者澄清(很可能是我自己).我希望我能给你不止一个人的信任.

a)新的{page} - 不要这样做.它会产生不希望的输出.我的意思是:ViewBag.page或ViewBag.pageNum

b)正如你们中的一些人指出的那样,我需要Html.ActionLink()而不是Url.Action()我已经成功使用,直到我切换到生成完整标签,而不仅仅是网址.

我确认以下工作符合要求:

@Html.ActionLink("BAR", "Index", "Home", new { ViewBag.PageNum }, new { @class = "FOO" })
Run Code Online (Sandbox Code Playgroud)

Eri*_*ips 12

我相信你想用一个ActionLink代替.这将允许您添加所需的任何属性.

@Html.ActionLink("BAR", "Index", "Home", new { page }, new { @class = "FOO" })
Run Code Online (Sandbox Code Playgroud)

输出:

<a href="home/index?page=2" class="FOO">BAR</a>
Run Code Online (Sandbox Code Playgroud)

或者你可以"手动"做到

<a href="@Url.Action("Index", "Home", new { page })" class="FOO">BAR</a>
Run Code Online (Sandbox Code Playgroud)


Eri*_*sch 6

Url.Action 不创建任何 html 元素,它只创建一个 URL,这就是为什么它被称为 Url.Action,而不是 Html.Action...(Html.Action 是完全不同的东西)。

如果您希望在使用 Url.Action 的链接上使用 css,请执行以下操作:

<a href="@Url.Action("Action", "Controller")" class="myclass">My Link<a>
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用 Html.ActionLink

@Html.ActionLink("My Link", "Action", "Controller", null, new { @class="myclass" })
Run Code Online (Sandbox Code Playgroud)