我正在尝试在我的 MVC6 控制器方法中为 Microsoft.AspNet.Mvc.Rendering.DefaultHtmlGenerator 创建(或以某种方式获取它的实例)
我想在我的 asp.net mvc 控制器中生成用于验证我的模型的 html。我的问题是在哪里获取 DefaultHtmlGenerator 的构造函数数据,例如防伪、metadataProvider 等
[HttpGet]
public IActionResult GetMarkup()
{
// IHtmlGenerator ge = this.CurrentGenerator();
IHtmlGenerator ge = new DefaultHtmlGenerator(params);
var tag= ge.GetClientValidationRules(params)
}
这是有关 HtmlGenerator 类的链接 默认Html生成器
由于 MVC 6 基于依赖注入,您所要做的就是在构造函数中 require
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
作为参数。但这确实回答了您提出的问题。