我查看了我在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请帮助,谢谢!
答案 0 :(得分:3)
您需要在ShadowVenue.Extensions
代码中包含<system.web.webPages.razor>
名称空间(而不是<pages>
代码。)
答案 1 :(得分:1)
除了SLaks的回答之外,您还可以在剃须刀视图的顶部放置@using ShadowVenue.Extensions
标记,以便进行一次性参考。