【问题标题】:Create/Get DefaultHtmlGenerator from MVC Controller从 MVC 控制器创建/获取 DefaultHtmlGenerator
【发布时间】:2016-01-05 20:06:05
【问题描述】:

我正在尝试在我的 MVC6 控制器方法中为 Microsoft.AspNet.Mvc.Rendering.DefaultHtmlGenerator 创建(或以某种方式获取它的实例)

我想在我的 asp.net mvc 控制器中生成用于验证我的模型的 html。我的问题是在哪里获取 DefaultHtmlGenerator 的构造函数数据,例如防伪、元数据提供者..等

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

这里是关于 HtmlGenerator 类的链接 DefaultHtmlGenerator

【问题讨论】:

标签: asp.net asp.net-mvc asp.net-core-mvc


【解决方案1】:

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

【讨论】:

  • 谢谢。这是相关的问题。如何生成(使用这个(IHtmlGenerator)类从模型中生成标记?或者我必须使用另一个类。我不了解 view.html。我想从模型验证属性生成验证 html .
  • @AmteBlessed 你找到答案了吗?我也想生成验证html。
  • @Haytam 看看我在Here 中的回答,如果您对我的回答感到满意,请点赞。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
  • 2013-05-08
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2020-10-13
相关资源
最近更新 更多