在ASP.NET MVC中构建ActionLinks时是否应该调用Html.Encode

Chr*_*s F 2 asp.net-mvc html-encode actionlink

如果从数据库中提取链接的名称,您是否应该调用Html.Encode方法来清除名称?

例如:

Html.ActionLink(Model.PersonFromDB.FirstName,
                "Action",
                "Controller",
                new RouteValueDictionary { { "id", Model.PersonFromDB.Id } },
                null)
Run Code Online (Sandbox Code Playgroud)

要么:

Html.ActionLink(Html.Encode(Model.PersonFromDB.FirstName),
                "Action",
                "Controller",
                new RouteValueDictionary { { "id", Model.PersonFromDB.Id } },
                null)
Run Code Online (Sandbox Code Playgroud)

有意义的是你想要这样做以确保没有危险的字符串注入到页面之间<a></a>标签之间,但是脚本和锚标签之间的可执行文件?

Dan*_*plo 6

不,因为根据SO 上的这个线程HtmlAction.Link()已经HTML编码了值,所以你最终会做两次.