这个相同的代码适用于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>";
}
}
Run Code Online (Sandbox Code Playgroud)
下面是Razor CSHTML代码.
@{Html.TabbedMenu
(
new List<MenuTab>
{
MenuTab.Create("Home", "Index", "Home"),
MenuTab.Create("About", "About", "Home"),
MenuTab.Create("Contact", "Contact", "Home")
}
);}
Run Code Online (Sandbox Code Playgroud)
包装代码@{ ... }(与你一样)是Razor相当于<% ... %>(没有=).
因此,您的代码会调用该函数,但不会对结果执行任何操作.
您应该删除{}和;和简单的写@Html.TabbedMenu(...); 这相当于<%: Html.TabbedMenu(...) %>.
您还需要更改方法以返回一个HtmlString以防止Razor转义HTML.
| 归档时间: |
|
| 查看次数: |
1966 次 |
| 最近记录: |