2009-12-29 5 views
0

Я использую ASP.NET MVC для обслуживания веб-приложения, и я хочу создать что-то вроде следующего кода.Можно ли установить общий тип другим классом?

<% using(HTML.Form(Model)) { %> 
<%  HTML.CreateTextBox('txt1', x => x.Property1); 
<% } 

Из приведенного выше кода способ расширения формы получит объект, который представляет тип текущего объекта модели на текущей странице просмотра. Затем метод CreateTextBox получит тип из метода Form, и я могу привязать текстовое поле к некоторому свойству этой модели.

Update 1

Следующий код является кодом метода CreateTextBox, который будет создавать экземпляр класса TextBox.

public static CreateTextBox(string value, Expression<Func<object>> bindedProperty) 
{ 
    // T should be receive from HTML.Form method or class 
    return new TextBox<T>(value); 
} 

Возможно ли создать код, который делает что-то вроде вышеуказанного кода?

Спасибо,

+0

Почему вы не создаете статический метод расширения для класса HTML, чтобы иметь такую ​​общую реализацию? – asyncwait

ответ

0

Это не обязательно. Модель всегда будет доступна, так что вы всегда будете иметь возможность сделать это:

<% 
using(Html.BeginForm()) 
{ 
    Html.TextBox('txt1', Model.Property1); 
} 
%> 

Свойство Модель на вашей странице всегда напечатал (если вы используете System.Web.Mvc.ViewPage<T>), так что вы будете всегда имеют доступ к свойствам непосредственно через свойство модели.

Если вы не используете общую версию (System.Web.Mvc.ViewPage<T>), то вы, вероятно, должны использовать это вместо не-универсальной версии.

+0

Я имею в виду, я хочу установить общий тип элемента управления TextBox, который генерируется методом Html.TextBox. Пожалуйста, прочтите мой обновленный вопрос. –

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