【问题标题】:how to navigate through an anchor?如何通过锚导航?
【发布时间】:2013-08-20 23:58:09
【问题描述】:

我的视图底部有“取消”和“下一步”。 “下一步”将详细信息发布回控制器。但我想“取消”,不是作为按钮,而是作为纯文本返回上一页。

<li class="align left"><a href="#">@T("Cancel")</a></li>
<li class="align right"><button type="submit">@T("Next")</button></li>

我可以从视图中做到吗?还是我必须将其更改为按钮并回发,然后使用回发从控制器导航?

我尝试将#URL 添加到 href 标记。但这会将 URL 添加到现有的 URL 上,而不是新的 URL

<li class="align left"><a href="#http://URL/">@T("Cancel")</a></li>

【问题讨论】:

  • 试试&lt;a href='@Url.Action("ActionName")'&gt;@T("Cancel")&lt;/a&gt;

标签: c# html asp.net-mvc razor anchor


【解决方案1】:

使用 Html 助手

我认为您只想使用ActionLink...

@Html.ActionLink("text for link", "ActionName", "ControllerName")

如果您需要 Action 的任何参数,请改用此重载:

@Html.ActionLink("text for link", "ActionName", "ControllerName", new { @p1 = 1, @p2 = 2 }, null)

请注意,该重载中的最后一个参数(我设置为null)可用于为生成的&lt;a&gt; 标记设置html 属性。例如:

@Html.ActionLink("text for link", "ActionName", "ControllerName", new { @p1 = 1, @p2 = 2 }, new { @class = "MyClass" })

使用纯 HTML

如果您从 href 值的开头删除 #,那么您尝试使用纯 html 也应该有效:

<a href="http://URL/">@T("Cancel")</a>

(不太确定你的 T() 函数是什么,但没关系)

或者,您可以根据 Action 名称动态生成正确的 URL,而不是指定硬编码的 URL(感谢 codingbiz 的提醒):

<a href="@(Url.Action("ActionName"))">@T("Cancel")</a>

或者对不同的控制器使用一个动作:

<a href="@(Url.Action("ActionName", "ControllerName"))">@T("Cancel")</a>

【讨论】:

  • 感谢您的详细回复,但它说 ystem.web.mvc.htmlhelper 不包含 .ActionLink 的定义
  • @John:我以前没见过。你使用的是什么版本的 MVC?
  • 啊,是的,谢谢musefan ....删除'#'修复了它。 @T 用于多种语言 - 它是果园 cms 的一部分
  • @John: Perharps this will help。更具体地说,您需要确保您的 web.config 包含 &lt;add namespace="System.Web.Mvc.Html"/&gt;(尽管此问题与您的问题不同,因此如果无法解决,请考虑针对您的问题的特定部分提出另一个问题)
【解决方案2】:

您可以这样做,只需将a 标记的href 设置为上一页即可。更好的是,使用ActionLink

<li class="align left">
    @Html.ActionLink(T("Cancel"), "PreviousAction")
</li>

【讨论】:

  • 感谢您的回复,但它告诉我 system.web.mvc.htmlhelper 不包含 .ActionLink 的定义
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多