C# 文本和视图状态存在问题
我在这里尝试创建一个链接到webhosting购物车进程的模块 第一步应该有一个带有“添加”按钮的文本字段。此按钮检查域的可用性并将其添加到列表中 这里的目标基本上是显示域验证列表,并以RadioBox的形式给出适当的操作(如果是免费的,则注册,否则转移,或者直接指向域) 所以基本上我检查可用性,然后在占位符中添加一个文本控件 问题是viewstate(当我向前和向后移动时,我丢失了我对域所做的选择) html:C# 文本和视图状态存在问题,c#,asp.net,C#,Asp.net,我在这里尝试创建一个链接到webhosting购物车进程的模块 第一步应该有一个带有“添加”按钮的文本字段。此按钮检查域的可用性并将其添加到列表中 这里的目标基本上是显示域验证列表,并以RadioBox的形式给出适当的操作(如果是免费的,则注册,否则转移,或者直接指向域) 所以基本上我检查可用性,然后在占位符中添加一个文本控件 问题是viewstate(当我向前和向后移动时,我丢失了我对域所做的选择) html: ( ... ) <asp:MultiView ID="mvF
( ... )
<asp:MultiView ID="mvFlow" runat="server" ActiveViewIndex="0">
<asp:View ID="vDomain" runat="server" onactivate="vDomain_Activate">
<asp:TextBox ID="txtDomain" runat="server" style="margin-bottom: 0px"
Width="254px"></asp:TextBox>
<asp:Button ID="domainAdd" runat="server" onclick="domainAdd_Click"
style="height: 26px" Text="Ajouter" />
<br />
<br />
<asp:PlaceHolder ID="phDomainResults" runat="server"></asp:PlaceHolder>
<br />
<br />
<asp:LinkButton ID="lbDomainSkip" runat="server" onclick="lbDomainSkip_Click">Prochaine
étape »</asp:LinkButton>
</asp:View>
( ... )
(…)
前链
磁带»
( ... )
其背后基本上是这样的:
lt.文本=
"<dl>" +
"<dt><strong>" + txtDomain.Text + "</strong> <span style='color:green;'>Le domaine est disponible</span></dt>" +
"<dd><input type='radio' name='" + txtDomain.Text.Replace('.', '_') + "_action' value='register' /> Register</dd>" +
"<dd><input type='radio' name='" + txtDomain.Text.Replace('.', '_') + "_action' value='transfert' disabled='disabled' /> Transfert</dd>" +
"<dd><input type='radio' name='" + txtDomain.Text.Replace('.', '_') + "_action' value='point' /> Point</dd>" +
"</dl>";
“”+
“”+txtDomain.Text+“Le domaine est disponsible”+
“登记册”+
“转让”+
“点”+
"";
一定有可能让事情变得更合理、更简单
根据我的建议,我这样做了:
LiteralControl lt = new LiteralControl();
RadioButtonList rl = new RadioButtonList();
lt.Text = "<strong>" + txtDomain.Text + "</strong> <span style='color:green;'>Le domaine est disponible</span>";
rl.Items.Add(new ListItem { Enabled = true, Selected = true, Text = "Enregistrement", Value = "register" });
rl.Items.Add(new ListItem { Enabled = false, Selected = false, Text = "Transfert", Value = "transfert" });
rl.Items.Add(new ListItem { Enabled = true, Selected = false, Text = "Pointer moi même", Value = "point" });
//phDomainResults is a PlaceHolder in the page
phDomainResults.Controls.Add(lt);
phDomainResults.Controls.Add(rl);
LiteralControl lt=new LiteralControl();
RadioButtonList rl=新的RadioButtonList();
lt.Text=“”+txtDomain.Text+”Le domaine est disponible”;
添加(新列表项{Enabled=true,Selected=true,Text=“Enregistrement”,Value=“register”});
添加(新列表项{Enabled=false,Selected=false,Text=“Transfert”,Value=“Transfert”});
添加(新列表项{Enabled=true,Selected=false,Text=“Pointer moiême”,Value=“point”});
//phDomainResults是页面中的占位符
phDomainResults.Controls.Add(lt);
phDomainResults.Controls.Add(rl);
似乎不太管用…如果需要使用视图状态,那么您是正确的,您不能使用文本。(或者更具体地说,你可以这样做,但这会相当麻烦
您可能应该动态生成一个asp RadioButtonList元素,并将其添加到占位符中。您的页面将能够在viewstate中记住RadioButtonList。如果需要使用view state,则您是正确的,您不能使用文字。(或者更具体地说,您可以,但这将非常麻烦。)
您可能应该动态生成asp RadioButtonList元素,并将其添加到占位符中。您的页面将能够在viewstate中记住RadioButtonList。我将在代码中的viewstate集合中存储相关信息,并在每次页面加载时清除占位符值,然后重新呈现并添加就像你现在的样子。这样你就不必担心ASP.Net会保存什么和不会保存什么。我会将相关信息存储在ViewState集合中,并在每次加载页面时清除占位符值,然后像现在一样重新呈现和添加文字。这样你就不必担心ASP.Net会保存什么,不会保存什么。ASP.Net保存视图状态很好:它会保存文本的内容,就像它应该保存的一样。但是,文本的内容只是标记(带有单选按钮的
),而不是用户对这些按钮所做的操作
因为您正在动态地将单选按钮添加到HTML中,所以ASP.NET页面不“知道”它们
您可以尝试使用RadioButtonList来代替文本控件中的单选按钮。ASP.NET保存视图状态很好:它保存了文本的内容,就像它应该保存的那样。但是,文本的内容只是标记(带有单选按钮的
),而不是用户对这些按钮所做的操作
因为您正在动态地将单选按钮添加到HTML中,所以ASP.NET页面不“知道”它们
与其在文字控件中吐出单选按钮,不如尝试使用RadioButton列表。似乎不起作用,当我返回时,RadioButton列表已消失。似乎不起作用,当我返回时,RadioButton列表已消失。