[英]ASP.NET Dynamic form generation and submition
我需要創建一個表單,在這個月中,用戶將使用帶有C#的ASP.NET表單輸入幾個不同的值(我正在思考一種網格類型的東西,頂部的值,一天中的某一天)后端...
那么生成這種形式的最佳方法是什么? 我不想硬編碼那么多控件,因為它會使submition有點惱人,但我還需要能夠給它前幾天輸入的值並讓它顯示在文本框中。
我將如何創建此表單以及如何從后端的文本框中獲取值?
下面是一個示例應用程序,它創建一個動態表單並將其提交回數據庫。 它是用VB.Net編寫的,但我確定它很容易轉換為C#。
http://www.asp101.com/samples/form_dynamic_aspx.asp
基本上它的工作方式是動態地將控件添加到表單,然后訪問使用Request.Form
集合發布到服務器的值。
如果您從頭開始構建並且可以使用ASP.NET MVC框架,那么可能值得在codeplex上查看Dynamic Forms項目: 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.
}
```
這是一個演示站點 ,其中包含您可以設置的各種功能的示例(例如嵌套集合,自動完成,日期選擇器等)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.