1

我有一个视图,旨在显示一个问题和几个代表问题可能答案的单选按钮。每个问题的可能答案数量都会发生变化,因此我需要找到一种动态生成单选按钮的方法。我是 aspx 语法的新手,不太确定如何处理,即如何在下面的 html 中显示我在脚本中创建的单选按钮集合?使用 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>
4

4 回答 4

1

好像你在混合 ASP.NET & 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")
            });
    }
于 2013-04-16T05:13:05.193 回答
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。您可以搜索该术语以查找它们的示例。它们存在于大多数常见的表单元素中。

于 2013-04-16T05:14:28.810 回答
0

在页面上显示答案和问题。但问题答案显示选项类型明智,选项类型是多选单选,多选单选,图像日期。if answer tabel option type field set if set 1 so display data in radio button wise in gridview to so to create this page in asp.net

于 2014-04-05T11:21:37.140 回答