簡體   English   中英

在ASP.NET MVC4中動態創建控件

[英]Dynamic creating controls in asp.net mvc4

我試圖在asp.net mvc4中動態創建控件,但遇到一些問題,也需要一些建議。 下面的以下語句不起作用,它向我顯示“row.Options”@for下面的錯誤行(row.Options中的var o)

除此之外,是否可以動態創建dropdownlist或dropdownlistfor(如果是),那么如何根據當前情況分配名稱和值?

視圖

            @foreach(var row in Model.Controls) {
                var i = 0;
                <div>                        
                     <label>@row.Caption</label>
                     @if (row.ControlType == "text") {
                        <input type="text" name="@row.Name" />
                     } else if (row.ControlType == "select") {

                        <select name="@row.Name">
                            @for (var o in row.Options ) {
                                <option value="@o.Value>">@o.Text</option>
                            }
                        </select>                             
                     }                                          
                </div>  
                i++;
            }
            </ul>

查看模型

public List<SelectListItem> MembershipTypeList { get; set; }

public class Controls
{
    public string Caption {get; set;}
    public string ControlType {get; set;} 
    public string Name {get; set;}
    public List<SelectListItem> Options { get; set; }
}

控制器片段

    public ActionResult Signup()
    {
        signup.MembershipTypeList.Add(new SelectListItem()
        {
            Text = "Student  £18.00",
            Value = "Student"
        });

        signup.MembershipTypeList.Add(new SelectListItem()
        {
            Text = "Associate  £18.00",
            Value = "Associate"
        });

        signup.Controls = new List<Controls>();
        signup.Controls.Add(new Controls() { Caption = "Age", ControlType = "text", Name = "txtage" });
        signup.Controls.Add(new Controls() { Caption = "Name", ControlType = "text", Name = "txtname" });
        signup.Controls.Add(new Controls() { Caption = "Membership", ControlType = "select", Name = "txtmembership", Options = signup.MembershipTypeList });

        return View("Signup", signup);
}

我認為可能是造成此問題的一個額外尖括號,請嘗試更改為:

<option value="@o.Value">@o.Text</option>

對於初學者,您的代碼在這里無效:

<select name="@row.Name">
    @for (var o in row.Options ) {
        <option value="@o.Value>">@o.Text</option>
    }
</select> 

@o.Value>刪除“ >

按原樣渲染會破壞html。

固定:

<select name="@row.Name">
    @foreach (var o in row.Options ) {
        <option value="@o.Value">@o.Text</option>
    }
</select> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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