我有一个用于显示问题的视图和几个代表问题可能答案的单选按钮。每个问题的可能答案数量都会发生变化,因此我需要找到一种动态生成单选按钮的方法。我是aspx语法的新手,我不太清楚如何解决这个问题,即如何在下面的html中显示我在脚本中创建的radiobuttons集合?使用RadioButtonList会更好吗?
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<UncleBobWebService.Models.MultipleChoiceQuestion>" %>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
<title>Application</title>
<link href="/Theme/UncleBobTheme.css" rel="Stylesheet" />
<script lang="cs" runat="server">
protected void Page_Load(Object o, EventArgs e)
{
int count = Model.PossibleAnswers.Count;
List<RadioButton> radioButtons = new List<RadioButton>();
for (int i = 0; i < count; ++i)
{
RadioButton button = new RadioButton();
button.ID = "1";
button.GroupName = "answers";
button.Text = Model.PossibleAnswers[i+1].TheAnswer;
button.Checked = false;
radioButtons.Add(button);
}
}
</script>
</head>
<body>
<h2>Question</h2>
<div class="body">
<form id=form1 runat=server action="/ApplicantApply/FormAction">
<div class="box">
<div class="left-justify">
<div><%= Html.DisplayFor(Model => Model.Question) %></div>
<!-- How to display the radiobutton list here instead of below? -->
<input type="radio" id="yesAnswer" name="yes" value="Yes">Yes<br />
<input type="radio" id="noAnswer" name="no" value="No">No<br />
</div>
</div>
<input type="submit" name="submit" value="Previous" />
<input type="submit" name="submit" value="Next" />
</form>
</div>
</body>
</html>
答案 0 :(得分:1)
好像你在混合使用ASP.NET&amp; ASP.NET MVC
如果您正在使用ASP.NET MVC:
<% for (int i = 0; i < Model.PossibleAnswers.Count; ++i) { %>
{
<label>
<%= Html.RadioButtonFor(m => m.PossibleAnswers[i].TheAnswer, m.PossibleAnswers[i]..ID) m.PossibleAnswers[i].TheAnswer %>
</label>
<% } %>
如果您使用的是ASP.NET:
为此目的使用RadioButtonList
。它更适合此类操作。
一种方法是在aspx文件中声明控件,然后在PageLoad
事件上添加项目/将其绑定到集合。
恕我直言绑定通常是一个更好的选择。
绑定示例:
http://asp-net-example.blogspot.com/2009/03/how-data-bind-radiobuttonlist-on-button.html
添加示例:
protected override void OnInit(EventArgs e)
{
RadioButtonList1.Items.AddRange(GetItems());
base.OnInit(e);
}
private ListItem[] GetItems()
{
return new ListItem[] {
new ListItem("Item 1", "1"),
new ListItem("Item 2", "2"),
new ListItem("Item 3", "3"),
new ListItem("Item 4", "4")
});
}
答案 1 :(得分:1)
您正在将Asp.net WebForm示例代码与Asp.net MVC视图混合使用。您不希望在MVC中使用Page_Load或任何Asp.net服务器控件。您想使用Html.RadioButton()
<div class="left-justify">
<div><%= Html.DisplayFor(Model => Model.Question) %></div>
<% for (var i=i; i<=Model.PossibleAnswers.Count(); i++) %>
<label><%= Html.RadioButtonFor(m => m.PossibleAnswers[i], "Yes")> %> Yes</label>
<label><%= Html.RadioButtonFor(m => m.PossibleAnswers[i], "No")> %> No</label>
<% } %>
</div>
这些东西被asp.net称为Html Helpers。您可以谷歌该术语来查找它们的示例。它们存在于大多数常见的表单元素中。
答案 2 :(得分:0)
您可以使用以下链接。
http://www.developerscode.com/2011/02/how-to-create-dynamic-registration-form.html
dynamically created radiobuttonlist
http://csharp-guide.blogspot.in/2012/05/adding-radiobutton-options-dynamically.html
http://forums.asp.net/t/1192583.aspx/1
http://www.codeproject.com/Questions/360219/radio-button-dynamic-creation
ASP.net creating dynamic Radio Button List
希望这会对你有所帮助。
答案 3 :(得分:0)
在页面上显示答案和问题。但问题答案显示选项类型明智,选项类型是多项选择单一答案,多项答案多项选择,图像日期。 如果回答tabel选项类型字段设置如果设置为1则在gridview中以单选按钮方式显示数据,以便在asp.net中创建此页面