是否可以在控制器中使用HtmlHelper,例如,获取TextBox(...)方法?并不是说我不能自己编写它生成的html,而是我只是想了解它是如何工作的,这样我就可以创建最佳的解决方案。
发布于 2009-03-07 03:43:43
下面是一个改编自this的示例
var h = new HtmlHelper(new ViewContext(ControllerContext, new WebFormView("omg"), new ViewDataDictionary(), new TempDataDictionary()), new ViewPage());
h.TextBox("myname");
请注意,这是一个黑客,它可以做到,但我不认为有任何好的理由这样做…
发布于 2011-01-10 02:10:20
您可以像这样使用方法:
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();
}
}
发布于 2009-03-07 23:44:22
HtmlHelper被设计成视图机制的一部分,应该被认为是独立于控制器和模型部分的。我不确定为什么要在控制器中生成控件,因为它的作用是将数据传递给视图以进行呈现。
我并不是说你不能实现它,但对于好的设计来说,它会更好。
你能解释一下你正在尝试实现什么,然后我们可以考虑用"MVC方式“来实现它吗?
https://stackoverflow.com/questions/621235
复制相似问题