我在aspx页面上构建表单。我想运行一种方法,如果用户勾选了“经常性捐赠?”复选框,则会添加更多字段和标签。
我的表格
<telerik:LayoutRow CssClass="formContainer">
<Columns>
<telerik:LayoutColumn Span="12" SpanSm="12" SpanMd="12">
<asp:Label id="firstName" runat="server"></asp:Label>
<br />
<asp:TextBox runat="server" ID="UserFirstName"></asp:TextBox>
</telerik:LayoutColumn>
<telerik:LayoutColumn Span="12" SpanSm="12" SpanMd="12">
<asp:Label id="lastName" runat="server"></asp:Label>
<br />
<asp:TextBox runat="server" ID="UserLastName"></asp:TextBox>
</telerik:LayoutColumn>
<telerik:LayoutColumn Span="3" SpanSm="12" SpanMd="12">
<asp:Label id="address1" runat="server"></asp:Label>
<br />
<asp:TextBox runat="server" ID="userAddress1"></asp:TextBox>
</telerik:LayoutColumn>
<telerik:LayoutColumn Span="9" SpanSm="12" SpanMd="12">
<asp:Label id="address2" runat="server"></asp:Label>
<br />
<asp:TextBox runat="server" ID="userAddress2"></asp:TextBox>
</telerik:LayoutColumn>
<telerik:LayoutColumn Span="3" SpanMd="12" SpanSm="12">
<asp:Label ID="city" runat="server"></asp:Label>
<br />
<asp:TextBox runat="server" ID="userCity"></asp:TextBox>
</telerik:LayoutColumn>
<telerik:LayoutColumn Span="9" SpanMd="12" SpanSm="12">
<asp:Label ID="zip" runat="server"></asp:Label>
<br />
<asp:TextBox ID="userZip" runat="server"></asp:TextBox>
</telerik:LayoutColumn>
<telerik:LayoutColumn>
<asp:Label ID="returningDonor" runat="server"></asp:Label>
<br />
<asp:CheckBox ID="userReturningDonor" runat="server" />
</telerik:LayoutColumn>
</Columns>
</telerik:LayoutRow>
还有我的代码
public partial class donationForm : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
firstName.Text = "First Name";
lastName.Text = "Last Name";
address1.Text = "Address 1";
address2.Text = "Address 2";
city.Text = "City";
zip.Text = "Zip Code";
returningDonor.Text = "Recurring Donation?";
userReturningDonor.Checked = showRecuring();
}
static void showRecuring()
{
/*RUN CODE*/
}
}
我得到的错误是
无法将类型“ void”隐式转换为“ bool”
最佳答案
根据您要完成的工作,这里有几件事情可以尝试:
单击复选框会导致发回邮件
如果您确实希望它在检查时立即回发并运行代码,我可以这样做:
像这样更新您的复选框:
<asp:CheckBox ID="userReturningDonor" runat="server" OnCheckedChanged="userReturningDonor_CheckedChanged" AutoPostBack="true" />
将此添加到后面的代码中:
protected void userReturningDonor_CheckedChanged(object sender, EventArgs e)
{
if (userReturningDonor.Checked) {
MsgBox("Checked");
} else {
MsgBox("Not checked");
}
}
摆脱错误
如果您只是想摆脱错误,但是您的代码仍按预期运行,则可以执行以下操作:
将
static void showRecuring()
更改为static bool showRecuring()
donationForm
期望showRecuring
在此行中返回boolean
:userReturningDonor.Checked = showRecuring();
但是,
showRecuring
是void
。这将消除您的错误,但是如果您希望
showRecuring
根据userReturningDonor.Checked
是否运行代码,则可以执行以下操作:只需在
Page_Load
事件中运行函数将
userReturningDonor.Checked = showRecuring();
替换为showRecuring(userReturningDonor.Checked);
并定义
showRecuring
像这样:static void showRecuring(bool returningDonorChecked){
if(returningDonorChecked) {
//yes
} else {
//no
}
}