【问题标题】:Razor output not working in MVC 3 but working in MVC 2Razor 输出在 MVC 3 中不工作,但在 MVC 2 中工作
【发布时间】:2012-03-26 21:41:13
【问题描述】:

同样的代码在 MVC 2 中运行良好,但在 MVC 3 Razor 中不运行。加载页面后,不会从 Razor 中调用的 HTMLHelper 加载菜单,如下所示。

用于测试的硬编码菜单未在页面上输出。

using System.Collections.Generic;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using myproject.Extensions;

public static class MenuHelper
{

    public static string TabbedMenu(this HtmlHelper helper, IEnumerable<MenuTab> tabs)
    {
       //I have hard coded menu for testing purpose.

        return "<div class='menu-image'><img src='/content/Images/common/on-left.gif' alt='' /></div><div class='on'><a class='over' href='/?Length=4'>Home</a></div><div class='menu-image'><img src='/content/Images/common/on-right.gif' alt='' /></div><a href='/Home/About'>About</a><a href='/Home/Contact'>Contact</a>";
    }

}

以下是 Razor CSHTML 代码。

 @{Html.TabbedMenu
                        (
                            new List<MenuTab>
                            {
                                MenuTab.Create("Home", "Index", "Home"),
                                MenuTab.Create("About", "About", "Home"),
                                MenuTab.Create("Contact", "Contact", "Home")
                            }
                        );}

【问题讨论】:

    标签: razor


    【解决方案1】:

    @{ ... } 中的包装代码(就像您所做的那样)相当于 Razor 的 &lt;% ... %&gt;(没有 =)。

    因此,您的代码调用函数,但不对结果执行任何操作。

    您应该删除{}; 并简单地写@Html.TabbedMenu(...);这相当于&lt;%: Html.TabbedMenu(...) %&gt;

    您还需要更改方法以返回 HtmlString 以防止 Razor 转义 HTML。

    【讨论】:

    • Ok 将其更改为如下 public static HtmlString TabbedMenu(this HtmlHelper helper, IEnumerable tabs) { return new HtmlString("HTML MENU HERE AS ABOVE"); } @Html.TabbedMenu ( new List { MenuTab.Create("Home", "Index", "Home"), } ) 错误低于 'System.Web.WebPages.WebPageExecutingBase.Write 的最佳重载方法匹配(System.Web.WebPages.HelperResult)' 有一些无效参数无法从 '方法组' 转换为 'System.Web.WebPages.HelperResult' c:\Path 19 myproject
    • @user:删除第一个 ( 之前的空格或包装整个调用:@(Html.TabbedMenu (...) ) Razor 解析器看到该空格并停止解析。 (它认为你正在使用一个属性)
    猜你喜欢
    • 2014-10-29
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多