【问题标题】:how to render actionlink to view form controller如何呈现 actionlink 以查看表单控制器
【发布时间】:2015-01-28 15:42:31
【问题描述】:
 ViewBag.htmml = "<li>" + "Html.ActionLink(" + "Home" + ", " + "Dashboard" + ", " + "User" + ")" + "</li>";

上面是我的代码,我正在尝试使用它在我的视图中呈现ActioLink。当代码运行时,使用以下代码,我没有得到名称为 Home 的操作链接,而是在我的 &lt;li&gt; 部分中得到 Html.ActionLink(Home, Dashboard, User)。如何获得我正在尝试的 ActionLink。

 @Html.Raw(ViewBag.htmml)

【问题讨论】:

  • 为什么要在控制器中而不是在视图中执行此操作(在视图中解析剃刀代码)?
  • @StephenMuecke :再次嗨斯蒂芬,请参考我的这个链接。 stackoverflow.com/questions/28186208/…。我正在尝试从数据库构建菜单。
  • 我也不明白另一个问题:)。您的剃刀代码需要在视图中。数据库中的什么决定了您要呈现的内容?

标签: asp.net-mvc-5 actionlink


【解决方案1】:

正如@Stephen Muecke 所说,HTML 需要在 View 中生成,而不是在 Controller 中。

但是,如果您坚持在 Controller 中创建它,则需要有一个 HtmlHelper 可供您调用 ActionLink 方法。但是,顾名思义,HtmlHelper 仅在视图中自动为您提供。

可以自己手动创建一个(例如使用来自this answer 的解决方案),但这非常低效且容易出错。

但是,由于您只是尝试生成一个 &lt;a&gt; 元素,并且您已经在自己创建元素(如 &lt;li&gt; 元素),您可以简单地执行此操作(使用 UrlHelper在控制器中也可以使用):

ViewBag.htmml = "<li><a href=\"" +
                 Url.Action("Dashboard", "User") +
                 "\">Home</a></li>";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    相关资源
    最近更新 更多