我需要創建一個表單,在這個表單中,每月的每一天用戶都會輸入幾個不同的值(我認爲網格排序的東西,頂部的值,月份的日期沿着一邊)使用ASP.NET的形式與C#後端...ASP.NET動態表單生成和子映射
那麼最好的方式來產生這種形式?我不想硬編碼那麼多的控件,因爲它會使得子控件有點煩人,但是我也需要能夠給它在前幾天輸入的值,並將它們顯示在文本框中。
我將如何去創建此表單以及如何從後端的文本框中獲取值?
我需要創建一個表單,在這個表單中,每月的每一天用戶都會輸入幾個不同的值(我認爲網格排序的東西,頂部的值,月份的日期沿着一邊)使用ASP.NET的形式與C#後端...ASP.NET動態表單生成和子映射
那麼最好的方式來產生這種形式?我不想硬編碼那麼多的控件,因爲它會使得子控件有點煩人,但是我也需要能夠給它在前幾天輸入的值,並將它們顯示在文本框中。
我將如何去創建此表單以及如何從後端的文本框中獲取值?
以下是創建動態表單並將其提交回數據庫的示例應用程序。它是用VB.Net編寫的,但確定它很容易轉換爲C#。
http://www.asp101.com/samples/form_dynamic_aspx.asp
基本上它的工作原理是動態地添加的控件形式然後訪問投遞到與Request.Form
收集服務器中的值的方式。
如果你從頭開始構建,並且可以使用ASP.NET MVC框架,可能是值得檢查出的動力形式在CodePlex項目上:http://mvcdynamicforms.codeplex.com/
這可能是矯枉過正的情況,但是這似乎一種非常強大的方法來獲得動態表單方法(您可以將配置存儲在XML文件中,數據庫等中),並將數據發回回來是通過評估服務器端代碼中的Request對象來處理的。
您可以使用我的FormFactory庫很容易地做到這一點。
默認情況下,它反映了對視圖模型產生PropertyVm[]
陣列:
```
var vm = new MyFormViewModel
{
OperatingSystem = "IOS",
OperatingSystem_choices = new[]{"IOS", "Android",};
};
Html.PropertiesFor(vm).Render(Html);
```
但你也可以編程方式創建的屬性,所以你可以從數據庫加載設置,然後創建PropertyVm
。
這是來自Linqpad腳本的片段。
```
//import-package FormFactory
//import-package FormFactory.RazorGenerator
void Main()
{
var properties = new[]{
new PropertyVm(typeof(string), "username"){
DisplayName = "Username",
NotOptional = true,
},
new PropertyVm(typeof(string), "password"){
DisplayName = "Password",
NotOptional = true,
GetCustomAttributes =() => new object[]{ new DataTypeAttribute(DataType.Password) }
}
};
var html = FormFactory.RazorEngine.PropertyRenderExtension.Render(properties, new FormFactory.RazorEngine.RazorTemplateHtmlHelper());
Util.RawHtml(html.ToEncodedString()).Dump(); //Renders html for a username and password field.
}
```
即使世界與可以設置的各種特徵(例如嵌套集合,自動完成,datepickers等)
例子 demo site