【发布时间】:2019-08-16 11:14:11
【问题描述】:
我有以下自定义模型绑定器:
public class AllowAndSanitizeHtmlBinder : IModelBinder
{
// initialize HtmlSanitizer (I want this to be injected)
private HtmlSanitizer _htmlSanitizer = new HtmlSanitizer();
sanitizer.PostProcessNode += (s, e) =>
(e.Node as IHtmlAnchorElement)?.SetAttribute("rel", "nofollow");
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var request = controllerContext.HttpContext.Request;
var name = bindingContext.ModelName;
// get the unvalidated user input
var unsanitizedMessageHtmlString = request.Unvalidated[name];
// removed script or any XSS threat from user input
return _htmlSanitizer.Sanitize(unsanitizedMessageHtmlString);
}
}
这段代码的问题是我正在模型绑定器类中对HtmlSanitizer 进行所有初始化(这违反了 SRP)。是否可以将HtmlSanitizer 注入上述活页夹?我正在使用 Ninject。
我见过this question:接受的答案表明模型绑定器不应该依赖于任何服务,我不确定这里是否是这种情况...我认为 DI 会简化我的代码。
【问题讨论】:
标签: asp.net-mvc dependency-injection ninject modelbinders