2010-01-18 93 views
3

我需要在控制器中使用HtmlHelper,所以我如何在Controller(asp.net mvc 2.0)中創建它?在控制器中創建HtmlHelper實例

+0

見我的編輯就如何得到它的MVC 2.0 – griegs 2010-01-18 04:39:03

+2

你想用的HtmlHelper一個視圖之外什麼工作? – Ajw 2010-01-18 04:49:36

+1

我懷疑他正在試圖構建傳回給視圖的控件。也許在jQuery的帖子後面。我寧願有一個局部視圖,我可以從視圖呈現或從jQuery後發送回來,但是... ... – griegs 2010-01-18 04:54:43

回答

8

這是你想要的嗎?

Using HtmlHelper in a Controller

編輯

使用此;

System.IO.TextWriter writer = new System.IO.StringWriter(); 

var h = new HtmlHelper(new ViewContext(ControllerContext, new WebFormView("omg"), new ViewDataDictionary(), new TempDataDictionary(), writer), new ViewPage()); 

string g = h.TextBox("myname").ToString(); 
+0

它爲舊的mvc版本 – complez 2010-01-18 04:23:21

+0

你是說它不起作用?這些類型在ASP.NET MVC 1.0和ASP.NET MVC 2之間只發生了很小的變化。如果它不起作用,那麼讓我們知道什麼是不起作用的。 – Eilon 2010-01-18 04:25:46

+0

@Eilon爲後人,它看起來像System.Web.Mvc.WebFormView沒有一個只有一個字符串的構造函數。 – 2015-10-22 04:19:31

7

您可以使用的方法是這樣的:

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 NotSupportedException(); 
} 
}