首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在控制器中使用HtmlHelper

在控制器中使用HtmlHelper
EN

Stack Overflow用户
提问于 2009-03-07 03:19:46
回答 6查看 59.2K关注 0票数 69

是否可以在控制器中使用HtmlHelper,例如,获取TextBox(...)方法?并不是说我不能自己编写它生成的html,而是我只是想了解它是如何工作的,这样我就可以创建最佳的解决方案。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-03-07 03:43:43

下面是一个改编自this的示例

代码语言:javascript
复制
var h = new HtmlHelper(new ViewContext(ControllerContext, new WebFormView("omg"), new ViewDataDictionary(), new TempDataDictionary()), new ViewPage());
h.TextBox("myname");

请注意,这是一个黑客,它可以做到,但我不认为有任何好的理由这样做…

票数 45
EN

Stack Overflow用户

发布于 2011-01-10 02:10:20

您可以像这样使用方法:

代码语言:javascript
复制
public static HtmlHelper GetHtmlHelper(this Controller controller)
{
    var viewContext = new ViewContext(controller.ControllerContext, new FakeView(), controller.ViewData, controller.TempData, TextWriter.Null);
    return new HtmlHelper(viewContext, new ViewPage());
}

public class FakeView : IView
{
    public void Render(ViewContext viewContext, TextWriter writer)
    {
        throw new InvalidOperationException();
    }
}
票数 32
EN

Stack Overflow用户

发布于 2009-03-07 23:44:22

HtmlHelper被设计成视图机制的一部分,应该被认为是独立于控制器和模型部分的。我不确定为什么要在控制器中生成控件,因为它的作用是将数据传递给视图以进行呈现。

我并不是说你不能实现它,但对于好的设计来说,它会更好。

你能解释一下你正在尝试实现什么,然后我们可以考虑用"MVC方式“来实现它吗?

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/621235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档