2016-01-05 201 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 。 –