2016-01-05 1 views
2

Я пытаюсь создать (или получить экземпляр этого как-то) для Microsoft.AspNet.Mvc.Rendering.DefaultHtmlGenerator внутри моего MVC6 метода контроллераСоздать/Получить DefaultHtmlGenerator от MVC контроллер

Я хотел, чтобы генерировать HTML для валидация для моей модели моей личности внутри моего контроллера asp.net mvc. Мой вопрос, где можно получить данные для конструктора DefaultHtmlGenerator как antiforgery, 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. Я хотел сгенерировать валидацию html из аттрибутов проверки модели , –

Смежные вопросы