2009-12-29 39 views
0

我使用ASP.NET MVC來提供Web應用程序,我想創建類似下面的代碼。是否可以通過另一個類來設置泛型?

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

從上面的代碼中,Form擴展方法將接收代表當前View頁面中當前Model對象的類型的對象。接下來,CreateTextBox方法將從Form方法接收類型,並且我可以將文本框綁定到此模型的某個屬性。

更新1

以下代碼是CreateTextBox方法,將創建文本框類的實例的代碼。

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 2010-01-29 19:11:02

回答

0

這是沒有必要的。該模型始終將是可用的,所以你將永遠是能夠做到這一點:

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

您網頁上的Model屬性是總是類型(假設你使用System.Web.Mvc.ViewPage<T>),所以你會總是可以通過Model屬性直接訪問屬性。

如果您不使用通用版本(System.Web.Mvc.ViewPage<T>),那麼您應該使用該版本而不是非通用版本。

+0

我的意思是我想設置由Html.TextBox方法生成的通用類型的TextBox控件。請閱讀我更新的問題。 – 2009-12-30 11:12:56

相關問題