2010-01-15 5 views
1

Так, например, в коде позади страницы веб-формы ASPX Я хотел бы быть в состоянии сделать такие вещи, какИспользование ASP.NET MVC Html Helpers в стандартном проекте веб-форм

строка textBoxHtml = Html.TextBox ("MyTextBox");

Возможно ли это?

Доступен ли исходный код для fork для веб-форм?

+0

Да, я хочу сделать это с помощью @ Html.Partial(), в целях повторного использования заголовка HTML-разметки. –

ответ

6
  1. Возможно? Да.

  2. Весь исходный MVC доступен по адресу: http://www.microsoft.com/downloads/details.aspx?FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b&displaylang=en

Удачи!

Вы быстро обнаружите, что выбивание битов кода из MVC похоже только на то, что вы хотите получить банан и получить горилл. ;)

+0

Где браконьеры, когда они нам нужны? – Henrik

2

Вот что-то, что работает для меня до сих пор.

public static class PageCommon 
{ 
    public static System.Web.Mvc.UrlHelper GetUrlHelper(this System.Web.UI.Control c) 
    { 
     var helper = new System.Web.Mvc.UrlHelper(c.Page.Request.RequestContext); 
     return helper; 
    } 
    class ViewDataBag : IViewDataContainer 
    { 
     ViewDataDictionary vdd = new ViewDataDictionary(); 
     public ViewDataDictionary ViewData 
     { 
      get 
      { 
       return vdd; 
      } 
      set 
      { 
       vdd = value; 
      } 
     } 
    } 
    public static System.Web.Mvc.HtmlHelper GetHtmlHelper(this System.Web.UI.Control c) 
    { 
     IViewDataContainer x; 

     var v = new System.Web.Mvc.ViewContext(); 
     var helper = new System.Web.Mvc.HtmlHelper(v, new ViewDataBag()); 
     return helper; 
    } 
+0

Использование этого помощника для визуализации ввода следующим образом: <% = this.GetHtmlHelper(). TextBox ("textBox")%>, дает NRE: [NullReferenceException: ссылка на объект не установлена ​​в экземпляр объекта.] System .Web.Mvc.Html.InputExtensions.InputHelper (HtmlHelper htmlHelper, InputType inputType, метаданные ModelMetadata, имя строки, значение объекта, логическое использованиеViewData, Boolean isChecked, логический setId, логический isExplicitValue, IDictionary'2 htmlAttributes) +43 System.Web. Mvc.Html.InputExtensions.TextBox (HtmlHelper htmlHelper, String name) +43 Любые идеи, что не хватает? – esteewhy

+0

в отладке, что точно равно нулю? – Maslow

+0

Зависит от того, какой метод ext вы используете: для .TextBox (..), который будет HttpContext (здесь он пытается получить значение), для .BeginForm это будет свойство .Writer (чтобы он мог отображать открытие/закрытие HTML теги). Окончательный класс может выглядеть так: https://gist.github.com/esteewhy/6450385 – esteewhy

Смежные вопросы