我正在尝试为我的MVC6控制器方法中的Microsoft.AspNet.Mvc.Rendering.DefaultHtmlGenerator创建(或以某种方式获取它的实例)
我想在我的asp.net mvc控制器中生成用于验证我的模型的html。我的问题是在哪里获取DefaultHtmlGenerator的构造函数数据,如antiforgery,metadataProvider..etc
[HttpGet]
public IActionResult GetMarkup()
{
// IHtmlGenerator ge = this.CurrentGenerator();
IHtmlGenerator ge = new DefaultHtmlGenerator(params);
var tag= ge.GetClientValidationRules(params)
}
这是关于HtmlGenerator类的链接 DefaultHtmlGenerator
答案 0 :(得分:2)
由于MVC 6基于依赖注入,您只需要在构造函数中使用IHtmlGenerator
,DI容器将自动填充DefaultHtmlGenerator
的所有依赖项(前提是DI配置中的设置是什么。
public class HomeController : Controller
{
private readonly IHtmlGenerator htmlGenerator;
public HomeController(IHtmlGenerator htmlGenerator)
{
if (htmlGenerator == null)
throw new ArgumentNullException("htmlGenerator");
this.htmlGenerator = htmlGenerator;
}
public IActionResult GetMarkup()
{
// Use the HtmlGenerator as required.
var tag = this.htmlGenerator.GetClientValidationRules(params);
return View();
}
}
也就是说,GetClientValidationRules
方法似乎只能在视图中工作,因为它接受ViewContext
作为参数。但这确实回答了你提出的问题。