Asp.net MVC 提供了很多(并且非常有用的)HtmlHelper
扩展。但是,如果我要提供一个带有一些扩展方法的微型子框架来扩展现有的方法呢?
即可BeginForm
能被重写为更丰富(总是添加防伪令牌等安全内容。
问题
为了不重写所有Asp.net MVC 的 HTML 辅助方法,我该如何强制使用我的方法?这样使用通常BeginForm
会引发异常或首先无法访问。System.Web.Mvc.Html
如果不从视图的文件夹web.config文件中删除命名空间,第二个选择可能是不可能的。这意味着所有这些助手都需要重写。这是我不想做的事情。
问题是,当使用这个微型子框架时,出于安全原因,它应该防止使用标准助手。时期。
我还有哪些其他选择?
例子
假设我只会写我自己的BeginForm
,我会打电话BeginSecureForm
,所以有人会把它用作:
@using Html.BeginSecureForm() {
...
@Html.EditorFor(m => m.Something)
...
}
如您所见,我也使用了自定义助手和标准EditorFor
助手。这意味着System.Web.Mvc.Html
仍然包含使用非自定义帮助器,如EditorFor
.
只要您使用我的自定义帮助方法,上面的代码就可以正常工作......但是如果一些开发人员忘记这样做并使用正常的方法怎么办?
@using Html.BeginForm() {
...
@Html.EditorFor(m => m.Something)
...
}
那么在这种情况下,我要么想:
Html.BeginForm
根本无法访问Html.BeginForm
抛出应该使用安全版本的异常- 可以做任何其他我不知道的事情来防止使用标准
BeginForm