我目前正在创建一个新的 ASP.net MVC 网站,并且发现自己到处都在使用 Html.Encode,这是一种很好的做法,但会变得非常混乱。我认为清理这个的一个好方法是如果我可以重载一个运算符来自动进行 Html 编码。
之前:
<%= Html.Encode( ViewData['username'] ) %>
相当于:
<%=h ViewData['username'] %>
任何人都有任何想法我可以如何做到这一点,也许使用扩展方法或其他东西?
我目前正在创建一个新的 ASP.net MVC 网站,并且发现自己到处都在使用 Html.Encode,这是一种很好的做法,但会变得非常混乱。我认为清理这个的一个好方法是如果我可以重载一个运算符来自动进行 Html 编码。
之前:
<%= Html.Encode( ViewData['username'] ) %>
相当于:
<%=h ViewData['username'] %>
任何人都有任何想法我可以如何做到这一点,也许使用扩展方法或其他东西?
它不像运算符重载那么干净,但我使用了以下扩展方法:
public static string Safe(this string sz)
{
return HttpUtility.HtmlEncode(sz);
}
所以在我的 aspx id 中:
<%= this.ViewData["username"].Safe() %>
在我看来,将额外的方法添加到表达式的末尾比通过函数发送值更漂亮。
注意:这是一个丑陋且未经测试的黑客,我不认为我会这样做
public static String h (this System.Object o, System.Object viewData)
{
return Html.Encode(viewData);
}
我不确定 ViewData 是什么类型,所以我在这里使用了 Object,最好在真实代码中实际更改类型。
这通过将扩展方法挂在 System.Object 上来工作,因此它始终适用于所有类型......丑陋,但它可以完成这项工作:
<%=h(ViewData['username']) %>