Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在文本框和RadioButtonList中循环_C#_Asp.net_Textbox_Radiobuttonlist - Fatal编程技术网

C# 在文本框和RadioButtonList中循环

C# 在文本框和RadioButtonList中循环,c#,asp.net,textbox,radiobuttonlist,C#,Asp.net,Textbox,Radiobuttonlist,在我的网络表单中,我有6个文本框和6个Radio按钮列表: 现在我想给访问者发送一封电子邮件,告诉他们,无论他们输入了什么,点击了什么,RadioButtonList都会列出。电子邮件部分工作正常,但我应该如何将所有文本框和RadioButtonLists绑定到一个字符串中 到目前为止,我有以下代码: protected void btnSubmit_Click1(object sender, EventArgs e) { //Specify sende

在我的网络表单中,我有6个文本框和6个Radio按钮列表:

现在我想给访问者发送一封电子邮件,告诉他们,无论他们输入了什么,点击了什么,RadioButtonList都会列出。电子邮件部分工作正常,但我应该如何将所有文本框和RadioButtonLists绑定到一个字符串中

到目前为止,我有以下代码:

         protected void btnSubmit_Click1(object sender, EventArgs e)
    {
        //Specify senders gmail address
        string SendersAddress = "test@gmail.com";

        //Specify The Address You want to sent Email To(can be any valid email address)
        string ReceiversAddress = "test@gmail.com";

        //Specify The password of gmial account u are using to sent mail(pw of sender@gmail.com)
        const string SendersPassword = "test";

        //Write the subject of ur mail
        const string subject = "Testing Items";


        List<string> st1 = GetTextBoxesAndRadioButtons();
        //string body = GetTextBoxes();

        try
        {
            //we will use Smtp client which allows us to send email using SMTP Protocol
            //i have specified the properties of SmtpClient smtp within{}
            //gmails smtp server name is smtp.gmail.com and port number is 587
            SmtpClient smtp = new SmtpClient
            {
                Host = "smtp.gmail.com",
                Port = 587,
                EnableSsl = true,
                DeliveryMethod = SmtpDeliveryMethod.Network,
                Credentials = new NetworkCredential(SendersAddress, SendersPassword),
                Timeout = 3000
            };

            //MailMessage represents a mail message
            //it is 4 parameters(From,TO,subject,body)
            MailMessage message = new MailMessage(SendersAddress, ReceiversAddress, subject, "Test");
            /*WE use smtp sever we specified above to send the message(MailMessage message)*/
            smtp.Send(message);
            Console.WriteLine("Message Sent Successfully");
            Console.ReadKey();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);

        }
    }


    public List<String> returnList = new List<String>();

    private List<string> GetTextBoxesAndRadioButtons()
    {
        string txt;

        foreach (Control ctr in Page.Controls)
        {

            CallControls(ctr);

        }

        return returnList;
    }

    private void CallControls(System.Web.UI.Control p)
    {
        string returntext = "";

        foreach (Control ctrlMain in p.Controls)
        {
            if (ctrlMain.HasControls())
            {
                /* Recursive Call */
                CallControls(ctrlMain);
            }
            if (ctrlMain is TextBox)
            {
                TextBox txt;
                txt = (TextBox)FindControl(ctrlMain.ID);
                returnList.Add(txt.Text);
            }
            else if (ctrlMain is RadioButton)
            {
                RadioButton rad;
                rad = (RadioButton)FindControl(ctrlMain.ID);
                returnList.Add(rad.Text);
            }
        }


    }
protectedvoid btnSubmit\u Click1(对象发送方,事件参数e)
{
//指定发件人gmail地址
字符串发送者地址=”test@gmail.com";
//指定要向其发送电子邮件的地址(可以是任何有效的电子邮件地址)
字符串接收方地址=”test@gmail.com";
//指定您用于发送邮件的gmial帐户的密码(pw的sender@gmail.com)
const string SendersPassword=“test”;
//写下你邮件的主题
const string subject=“测试项目”;
List st1=getTextBoxes和RadioButtons();
//字符串体=getTextBox();
尝试
{
//我们将使用Smtp客户端,它允许我们使用Smtp协议发送电子邮件
//我已在{}内指定了SmtpClient smtp的属性
//gmail smtp服务器名称为smtp.gmail.com,端口号为587
SmtpClient smtp=新SmtpClient
{
Host=“smtp.gmail.com”,
端口=587,
EnableSsl=true,
DeliveryMethod=SmtpDeliveryMethod.Network,
凭据=新网络凭据(发件人地址、发件人密码),
超时=3000
};
//MailMessage表示邮件消息
//它是4个参数(从、到、主题、主体)
MailMessage=新邮件(发送者地址、接收者地址、主题“测试”);
/*我们使用上面指定的smtp服务器发送邮件(MailMessage)*/
smtp.Send(message);
Console.WriteLine(“消息已成功发送”);
Console.ReadKey();
}
捕获(例外情况除外)
{
控制台写入线(例如消息);
}
}
public List returnList=新列表();
私有列表GetTextBoxes和RadioButtons()
{
字符串txt;
foreach(控制页面中的控制中心)
{
呼叫控制(ctr);
}
退货清单;
}
私有void CallControls(System.Web.UI.Control p)
{
字符串returntext=“”;
foreach(p.Controls中的控制中心主)
{
if(ctrlMain.HasControls())
{
/*递归调用*/
呼叫控制(ctrlMain);
}
如果(ctrlMain是文本框)
{
文本框txt;
txt=(文本框)FindControl(ctrlMain.ID);
returnList.Add(txt.Text);
}
否则如果(ctrlMain是单选按钮)
{
无线电按钮无线电;
rad=(单选按钮)FindControl(ctrlMain.ID);
returnList.Add(rad.Text);
}
}
}
以下是UI的标记:

<tr>
        <td class="style4">
            <asp:Label ID="Label1" runat="server" Text="1. "></asp:Label>
            <asp:TextBox ID="tbShoppingList1" runat="server"></asp:TextBox>
        </td>
        <td>
            <asp:RadioButtonList ID="RadioButtonList1" runat="server" Height="16px" 
                RepeatDirection="Horizontal" Width="772px">
                <asp:ListItem>CVS</asp:ListItem>
                <asp:ListItem>Food Lion</asp:ListItem>
                <asp:ListItem>Home Depot</asp:ListItem>
                <asp:ListItem>Lowe`s</asp:ListItem>
                <asp:ListItem>Publix</asp:ListItem>
                <asp:ListItem>Target</asp:ListItem>
                <asp:ListItem>Walgreens</asp:ListItem>
                <asp:ListItem>WinDixie</asp:ListItem>
                <asp:ListItem>Walmart</asp:ListItem>
            </asp:RadioButtonList>
        </td>
    </tr>

并行版本系统
食狮
家得宝
洛厄斯
Publix
目标
沃尔格林
温迪西
沃尔玛
接下来的5个文本框和RadioButtonList也是如此

这是行不通的


“st1”未在其中存储任何内容。

将ctr转换为文本框

if (ctr is TextBox)
            {
                textBoxes.Add((ctr as TextBox).Text);  
            }
或者更好:

var tb = ctr as TextBox;
if( null != tb )
       textBoxes.Add(cb.Text); 

对于最后一个,避免同时调用is/as。

将ctr转换为文本框

if (ctr is TextBox)
            {
                textBoxes.Add((ctr as TextBox).Text);  
            }
或者更好:

var tb = ctr as TextBox;
if( null != tb )
       textBoxes.Add(cb.Text); 

对于最后一个,您避免同时调用is/as。

您需要将ctr转换为文本框,然后访问“Text”属性,而不是调用“ToString”。。尝试:

List textboxs=新列表();
foreach(此.Controls中的控件c)
{
如果(c是文本框)
{
textboxs.Add(((TextBox)c.Text);//oops..忘记了一组括号必须返回并编辑。
}
}
干杯,
CEC

您需要将ctr转换为文本框,然后访问“Text”属性,而不是调用“ToString”。。尝试:

List textboxs=新列表();
foreach(此.Controls中的控件c)
{
如果(c是文本框)
{
textboxs.Add(((TextBox)c.Text);//oops..忘记了一组括号必须返回并编辑。
}
}
干杯,
CEC

这应该对两个控件都起作用。您还可以用两种不同的方法分离逻辑。这将递归查找带有page.controls的所有文本框和单选按钮。将returnList变量声明为全局变量(两种方法都可用)

public List returnList=new List();
私有列表GetTextBoxes和RadioButtons()
{
字符串txt;
foreach(控制页面中的控制中心)
{
呼叫控制(ctr);
}
string finalstring=string.Join(“,”,returnList.ToArray());
退货清单;
}
私有void CallControls(System.Web.UI.Control p)
{
字符串returntext=“”;
foreach(p.Controls中的控制中心主)
{
if(ctrlMain.HasControls())
{
/*递归调用*/
呼叫控制(ctrlMain);
}
如果(ctrlMain是文本框)
{
TextBox txt=(TextBox)ctrlMain;
//txt=(文本框)FindControl(ctrlMain.UniqueID);
returnList.Add(txt.Text);
}
否则如果(ctrlMain是RadioButtonList)
{
RadioButtonList rad=(RadioButtonList)ctrlMain;
//rad=(RadioButtonList)FindControl(ctrlMain.UniqueID);
返回列表。添加(rad.SelectedValue);
}
}
}

这对c和