Dunno如果在PR或Beta中发生这种情况,但如果我创建了一个扩展方法HtmlHelper
,则在Razor驱动的页面中无法识别:
namespace SomeNamespace.Extensions {
public static class HtmlExtensions {
public static string Foo(this HtmlHelper html) {
return "Foo";
}
}
}
Run Code Online (Sandbox Code Playgroud)
我把它添加到以下<Namespaces>
部分Web.config
:
<pages>
<namespaces>
<add namespace="System.Web.Mvc" />
<!-- snip -->
<add namespace="SomeNamespace.Extensions"/>
</namespaces>
</pages>
Run Code Online (Sandbox Code Playgroud)
但是在尝试查看页面时会抛出编译错误:
@Html.Foo()
Run Code Online (Sandbox Code Playgroud)
如果我使用WebForms重新创建页面,它可以正常工作.这是怎么回事?
解决方法
如果我@using SomeNamespace.Extensions
在我的Razor视图中包含它,那么它可以工作,但我更愿意将它包含在内Web.config
我有一个小型的MVC站点,它使用Html.ActionLink帮助器作为导航栏.我想改变的一件事是默认的ActionLink将呈现一个到页面的html链接,即使这是当前页面.
例如,它创建一个这样的链接:
<a href="/myUrl">Some title...</a>
Run Code Online (Sandbox Code Playgroud)
即使你已经在/ myUrl.如果它会禁用该链接并且可能插入一个特殊的CSS类来显示当前访问的页面,那将是很好的,如下所示:
<a href="#" class="currentPageCSS">My Url</a>
<a href="/someOtherUrl">Some Other Url</a>
Run Code Online (Sandbox Code Playgroud)
在加载MVC站点之前一定遇到过这个问题,所以我很想知道其他人是如何处理它的.