2010-01-18 3 views
3

Мне нужно сделать с HtmlHelper в контроллере, так как я его создаю в контроллере (asp.net mvc 2.0)?Создать экземпляр HtmlHelper в контроллере

+0

Смотрите мой выбор о том, как заставить его работать в MVC 2.0 – griegs

+2

Что вы хотите с HtmlHelper за пределами зрения? – Ajw

+1

Я подозреваю, что он пытается создать элементы управления, которые передаются обратно в представление. Возможно, в сообщении jQuery. Я бы предпочел иметь частичное представление, которое я могу отобразить из представления или отправить обратно из сообщения jQuery, но да ... – griegs

ответ

8

Это то, что вы хотите?

Using HtmlHelper in a Controller

EDIT

Используйте это;

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

+0

Вы говорите, что это не работает? Эти типы были изменены минимально между ASP.NET MVC 1.0 и ASP.NET MVC 2. Если это не работает, сообщите нам, что не работает. – Eilon

+0

@Eilon для потомков, похоже, что System.Web.Mvc.WebFormView не имеет конструктора, который принимает одну строку. –

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(); 
} 
} 
Смежные вопросы