我在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();


但是,showRecuringvoid

这将消除您的错误,但是如果您希望showRecuring根据userReturningDonor.Checked是否运行代码,则可以执行以下操作:

只需在Page_Load事件中运行函数

userReturningDonor.Checked = showRecuring();替换为showRecuring(userReturningDonor.Checked);

并定义showRecuring像这样:

static void showRecuring(bool returningDonorChecked){
    if(returningDonorChecked) {
        //yes
    } else {
        //no
    }
}

10-04 16:35