Mik*_*ike 23 asp.net-mvc helper razor
我正在尝试创建一个像这样的Razor助手:
@helper Render(IEnumerable<MyItem> items) {
<ul>
@foreach (var item in items) {
<li><a href="@Url.Content(item.Url)">Click</a></li>
}
</ul>
}
Run Code Online (Sandbox Code Playgroud)
这里唯一的问题是System.Web.WebPages.HelperPage(Razor助手的基类)没有Url属性(类型为UrlHelper).它有Html(类型为HtmlHelper)但没有Url.
在帮助者中获取UrlHelper的最简洁方法是什么?我应该新推出内联吗?
小智 30
ASP.Net MVC的语法Phil Haack使用Razor(MVC 3)的Repeater语法?- 堆栈溢出
@helper Render(IEnumerable<MyItem> items) {
var url = new System.Web.Mvc.UrlHelper(Context.Request.RequestContext);
<ul>
@foreach (var item in items) {
<li><a href="@url.Content(item.Url)">Click</a></li>
}
</ul>
}
Run Code Online (Sandbox Code Playgroud)
或者,如果使用MVC3 RC2
@helper Render(IEnumerable<MyItem> items) {
<ul>
@foreach (var item in items) {
<li><a href="@Href(item.Url)">Click</a></li>
}
</ul>
}
Run Code Online (Sandbox Code Playgroud)
希望这有帮助.
小智 7
我试图做同样的事情并发现这篇文章.
我通过使用@VirtualPathUtility.ToAbsolute("~/foo/bar.jpg")
代替而解决了我的问题@Url.Content("~/foo/bar.jpg")
由于@VirtualPathUtility.ToAbsolute()
是静态的,它随处可见.此外,我没有添加任何参考或任何东西,它从我的Razor视图开箱即用.
如果你需要使用@Url.Action
或者@Url.RouteUrl
,你可能想找到一个真实的UrlHelper
...但是@Url.Content
(这也是我试图使用的),@VirtualPathUtility.ToAbsolute()
效果很好!
归档时间: |
|
查看次数: |
17560 次 |
最近记录: |