gpt4 book ai didi

.net - 动态加载用户控件 ASP.net 中的单选选项 GroupName 问题

转载 作者:行者123 更新时间:2023-12-03 00:00:19 26 4
gpt4 key购买 nike

我有用户控制

<table style="border-width: 0">
<tr>
<td style="vertical-align: middle;">
<asp:RadioButton ID="rdOption" runat="server" Text="I m testing"
GroupName="Questions" oncheckedchanged="rdOption_CheckedChanged"
AutoPostBack="True"/>
</td>
<td style="vertical-align: middle; padding-left: 10px">
<asp:TextBox ID="txtOthers" runat="server" CssClass="txtbox" Visible="false"></asp:TextBox>
</td>
</tr>
</table>

protected void Page_Load(object sender, EventArgs e)
{
rdOption.GroupName = "myGroup";
rdOption.Text = Option.OptionDesc;
}

在 Survery.aspx 上,我动态加载了该用户控件

 foreach (clsOptions option in _CurrentQuestion.Options)
{
UserControls_OptionField ctrl = Page.LoadControl("~/UserControls/OptionField.ascx") as UserControls_OptionField;
ctrl.Option = option;
pnlOption.Controls.Add(ctrl);
}

问题是每个选项都有不同的组名称,如下所示。这就是为什么选项无法正常工作并且可以选择所有选项,而在 MCQ 中只能选择一个选项。

<input id="ContentPlaceHolder1_ctl01_rdOption" type="radio" name="ctl00$ContentPlaceHolder1$ctl01$myGroup" value="rdOption">

<input id="ContentPlaceHolder1_ctl02_rdOption" type="radio" name="ctl00$ContentPlaceHolder1$ctl02$myGroup" value="rdOption">

enter image description here

最佳答案

正如大家所建议的,这是设计使然,后来被认为是一个错误。

Joel 建议的控件非常棒,只是它覆盖了整个渲染逻辑,因此,编写此控件后框架中的任何增强功能都不会使用。

所以,我建议替换 Render()另一个控件中的方法:

    protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
using (var stringWriter = new StringWriter())
using (var htmlWriter = new HtmlTextWriter(stringWriter))
{
base.Render(htmlWriter);
var tagText = stringWriter.ToString();

tagText = Regex.Replace(tagText, "name=\"(\\S+)\"", "name=\"" + GroupName + "\"");

writer.Write(tagText);
}
}

好处是能够保留可能来自基本渲染的所有额外内容。

请注意,您可以:

  • 向类中添加另一个属性,以根据是否设置该属性使不同的呈现行为可选

  • 将所有 <asp:RadioButton:声明引用您的自定义控件而不更改它们,通过 web.config:

  <system.web>
<pages>
<tagMapping>
<add tagType="System.Web.UI.WebControls.RadioButton" mappedTagType="WebformsLibrary.CustomRadioButton" />
</tagMapping>
</pages>
</system.web>

哪里WebformsLibrary.CustomRadioButton是类(class)。

关于.net - 动态加载用户控件 ASP.net 中的单选选项 GroupName 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5147371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com