2013-07-19 92 views
1

我的web應用程序的第一部分是創建一個接口,用戶可以在其中創建字段名稱以及與字段名稱關聯的數據類型。 現在我需要創建第二部分,從數據庫中提取這些字段名稱以及與它們關聯的數據類型,並使用這些字段名稱/數據類型即時創建html控件。例如,如果其中一個字段名稱是「birthdate」,數據類型是「datetime」,那麼我的視圖應該會自動創建一個名稱屬性爲「birthdate」的html文本框。如果字段名稱爲「活動」,並且數據類型爲布爾值,則該視圖應自動創建名稱屬性爲「活動」的複選框。任何人有任何建議如何在MVC做到這一點?我假設我需要使用反射,並且當我必須發回數據時,我將不得不發回一個json對象。動態創建html控件(反射?)

+0

您必須創建您自己的ModelMetadataProvider和ModelValidatiorProvider。這可能是有用的:http://mgolchin.net/posts/21/dive-deep-into-mvc-modelmetadata-and-modelmetadataprovider – ataravati

回答

0

我沒有創建自己的htmlhelpers,但是我做了類似的事情。我使用字符串生成器來動態創建我的控制器的get方法中的html,然後將其發佈到視圖中。

+0

雖然這可能有效,但它違背了mvc和OOP的良好做法。助手本來是一個更好的方法,可以等同於字符串聚合的相同方法來生成該字段。 – doogle

+0

我無法使用html助手的原因是因爲我正在使用抽象模式。我需要動態創建的動態html控件基於模板。當用戶在下拉列表中選擇一個值時,該值將通過ajax回傳到我的控制器,然後傳遞到我的存儲庫。然後該值用於從存儲庫中獲取正確的模板。然後,該模板用於在我的操作結果中的字符串生成器中創建我的html控件。該字符串然後作爲用於創建控件的MVC字符串返回到視圖。 – RiceRiceBaby

0

你可以使用mvc htmlhelpers。例如靈活的htmlhelper,用於接受收集和其他參數的dropdownlist。另一個htmlhelper來獲取收集並提供listbox和..... 並且在您的視圖中,您可以使用這些htmlhelpers的類型。