Razor输出在MVC 3中不起作用,但在MVC 2中工作2
问题描述:
该代码与MVC 2一起工作良好,但不适用于MVC 3 Razor。一旦加载页面,就不会像下面那样从Rails中调用HTMLHelper加载菜单。Razor输出在MVC 3中不起作用,但在MVC 2中工作2
用于测试哪些不在页面上输出的硬编码菜单。
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的相当于<% ... %>
(无=
)。
因此,您的代码会调用该函数,但不会对结果执行任何操作。
你应该删除{}
和;
,并简单地写@Html.TabbedMenu(...)
;这相当于<%: Html.TabbedMenu(...) %>
。
您还需要更改方法以返回HtmlString
以防止Razor转义HTML。
好的改变这个如下 公共静态HtmlString TabbedMenu(此的HtmlHelper助手,IEnumerable的标签) { \t回报新HtmlString( “HTML菜单这里上”); } @ Html.TabbedMenu ( \t新名单 \t { \t \t MenuTab.Create( “家”, “索引”, “家”), \t} ) 误差低于 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)'的最佳重载方法匹配有一些无效参数 无法从'方法组'转换为'System.Web.WebPages.HelperResult'\t c :\ Path myproject –
Pirzada
2010-11-26 19:07:34