具有Razor视图的MVC3 UrlHelperExtensions(来自.ASPX)

时间:2011-02-11 10:18:39

标签: asp.net-mvc-3 razor image src

我查看了我在Razor Views上可以找到的所有内容,但是我找不到任何关于如何将这个UrlHelper用法从WebForms转换为Razor的内容。

.ASPX代码示例:

<img src="<%= Url.AccountPicture(Model.Picture, "bigger") %>" alt="<%= Html.AttributeEncode(Model.FullName) %>" width="73" height="73" />

我如何将其转换为RAZOR:

<img src="@Url.AccountPicture(Model.Picture, "bigger")" alt="@Html.AttributeEncode(Model.FullName)" width="73" height="73" />

随附的UrlHelperExtensions.cs文件:

namespace ShadowVenue.Extensions
    {
        public static class UrlHelperExtensions
        {
            public static string AccountPicture(this UrlHelper helper, string name, string size)
            {
                if (string.IsNullOrEmpty(name))
                    name = "default";

                return helper.Content(string.Format("~/content/images/pictures/{0}_{1}.png", name, size));
            }
        }
    }

Visual Studio突出显示错误| @Url。 AccountPicture |与

'System.Web.Mvc.UrlHelper'不包含'AccountPicture'的定义,也没有扩展方法'AccountPicture'接受类型为'System.Web.Mvc.Helper'的第一个参数'(你错过了使用指令或程序集引用吗?)

它在RunTime上产生此错误:

'System.Web.Mvc.UrlHelper'不包含'AccountPicture'的定义,并且没有扩展方法'AccountPicture'接受类型'System.Web.Mvc.UrlHelper'的第一个参数可以找到(你错过了使用指令或汇编引用吗?)

我在web.config

中注册了名称空间ShadowVenue.Extensions

请帮助,谢谢!

2 个答案:

答案 0 :(得分:3)

您需要在ShadowVenue.Extensions代码中包含<system.web.webPages.razor>名称空间(而不是<pages>代码。)

答案 1 :(得分:1)

除了SLaks的回答之外,您还可以在剃须刀视图的顶部放置@using ShadowVenue.Extensions标记,以便进行一次性参考。