2016-01-05 158 views
2

我想创建获取DefaultHtmlGenerator(或以某种方式得到它的一个实例)的Microsoft.AspNet.Mvc.Rendering.DefaultHtmlGenerator我MVC6控制方法中创建/ MVC中控制器

我想生成的HTML验证我的模型我的自我内部控制器的asp.net mvc。我的问题是从哪里得到的构造数据DefaultHtmlGenerator像防伪,metadataProvider..etc

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

这里是一个关于HtmlGenerator类链接 DefaultHtmlGenerator

回答

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作为参数。但这确实回答了你问的问题。

+1

谢谢。这是相关的问题。我怎么能生成(使用这个(IHtmlGenerator)类的模型标记?或者我必须使用另一个类。我没有view.html的知识。我想从模型验证attrubutes生成验证html 。 –