asp.net 从MVC控制器创建/获取DefaultHtmlGenerator

yvfmudvl  于 5个月前  发布在  .NET
关注(0)|答案(1)|浏览(72)

我试图在我的MVC 6控制器方法中为Microsoft.AspNet.Mvc.Rendering.DefaultHtmlGenerator创建(或以某种方式获取它的示例
我想为我的模型生成验证的html我自己在我的asp.net mvc控制器内。我的问题是从哪里获取DefaultHtmlGenerator的构造函数数据,如防伪,metadataProvider..等

[HttpGet]
 public IActionResult GetMarkup()
 {
    // IHtmlGenerator ge = this.CurrentGenerator(); 
    IHtmlGenerator ge = new DefaultHtmlGenerator(params);
    var tag= ge.GetClientValidationRules(params)
}

字符串
这里是关于HtmlGenerator类DefaultHtmlGenerator的链接

kcrjzv8t

kcrjzv8t1#

由于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作为参数。但这确实回答了您提出的问题。

相关问题