簡體   English   中英

ASP.NET動態表單生成和子表達

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM