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