我有一个asp.net webform
页面,其中有2个单选按钮,这些单选按钮将所选值存储在session
中,并显示在我的确认页面上。当用户点击提交按钮时,会发送一封包含所有详细信息的电子邮件(同样所有详细信息都显示在session
)。
我在查看电子邮件中所选单选按钮的值时遇到问题。我能看到的唯一选择是有两个相同的字段标签,其中一个是空的,另一个是会话中显示的选定值。
我尝试将以下IF
添加到我的电子邮件正文中,但它会从我的电子邮件中删除所有详细信息。
我原以为我可以在我的IF statement
文件中使用.cs
检查其中一个单选按钮不是null
,然后创建另一个session variable
。我无法弄清楚如何传递session
条件中的IF
值来填充新的session
。
带有单选按钮的页面的HTML
<div class="form-group">
<asp:Label ID="PrefContactLabel" class="col-sm-3 control-label" runat="server" Text="Preferred method of contact *" style="padding-top: 0px"></asp:Label>
<div class="col-sm-3">
<asp:Label runat="server" class="radio-inline" style="padding-top: 0px">
<asp:RadioButton runat="server" id="PhoneRadioButton" value="Phone" GroupName="prefcontact"/> Phone
</asp:Label>
<asp:Label runat="server" class="radio-inline" style="padding-top: 0px">
<asp:RadioButton runat="server" id="EmailRadioButton" value="Email" GroupName="prefcontact"/> Email
</asp:Label>
</div>
<div class="col-sm-offset-3 col-sm-9">
<asp:CustomValidator id="custPrefContact" runat="server" Display="Dynamic" ForeColor="Red" ErrorMessage="Please select a preferred method of contact." ClientValidationFunction="PrefContact_ClientValidate" OnServerValidate="PrefContact_ServerValidate" />
</div>
</div>
带有单选按钮的页面后面的代码
protected void Step01SubmitButton_Click(object sender, EventArgs e)
{
Session["PhoneRadioButton"] = PhoneRadioButton.Checked ? "Phone" : "";
Session["EmailRadioButton"] = EmailRadioButton.Checked ? "Email" : "";
}
这是我在上面代码中添加的IF
语句的开头
if (Session["PhoneRadioButton"].ToString() == "Phone" || Session["EmailRadioButton"].ToString() == "Email")
{
Session["PrefContactRadioButton"] = Step01HiddenPrefField.Text;
}
这是在我的确认页面上打破我的电子邮件的代码行
Label4.Text + " " + Session["PhoneRadioButton"].ToString() == "Phone" ? Session["PhoneRadioButton"].ToString() : Session["EmailRadioButton"].ToString();
我想填充我的&#34;会话[&#34; PrefContactRadioButton&#34;]&#34;来自&#34;会话[&#34; PhoneRadioButton&#34;] /会话[&#34; EmailRadioButton&#34;]&#34;。
答案 0 :(得分:0)
这条线对我来说很危险:
Label4.Text + " " + Session["PhoneRadioButton"].ToString() == "Phone" ? Session["PhoneRadioButton"].ToString() : Session["EmailRadioButton"].ToString();
如果在字符串连接中使用三元运算符,请在其周围加上括号。
Label4.Text + " " + (Session["PhoneRadioButton"].ToString() == "Phone" ? Session["PhoneRadioButton"].ToString() : Session["EmailRadioButton"].ToString());
答案 1 :(得分:0)
经过将近一个月的尝试排除它之后无法相信,它只是来找我,只需对两个单选按钮使用相同的session
名称,并猜测它的工作原理。
更新了.cs
代码
if (PhoneRadioButton.Checked)
{
Session["PrefContactRadioButton"] = PhoneRadioButton.Checked ? "Phone" : "";
}
else if (EmailRadioButton.Checked)
{
Session["PrefContactRadioButton"] = EmailRadioButton.Checked ? "Email" : "";
}
然后更新了我的确认页面以调用我的新session
变量
<div class="form-group">
<asp:Label ID="Step01ContactMethod" class="col-xs-6 col-sm-3 control-label" runat="server" Text="Preferred method of contact:"></asp:Label>
<div class="col-xs-6 col-sm-9 form-control-static">
<%=Session["PrefContactRadioButton"] %>
</div>
</div>
最后更新了我的确认页面电子邮件正文
msg.Body = Step01ContactMethod.Text + " " + Session["PrefContactRadioButton"].ToString();
瞧它有效。