C# 使用asp.net mvc中的foreach循环获取存储在数据库中的所有电话号码

C# 使用asp.net mvc中的foreach循环获取存储在数据库中的所有电话号码,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我的电话号码存储在数据库中,我想使用foreach循环检索所有电话号码,并将其分配给变量并发送批量短信,但问题是,我从数据库中只获得一个号码。这是我的密码: // GET: Members/SendBatch public ActionResult SendBatch() { return View(); } [HttpPost] [ValidateAntiForgeryToken] public ActionResu

我的电话号码存储在数据库中,我想使用
foreach
循环检索所有电话号码,并将其分配给变量并发送批量短信,但问题是,我从数据库中只获得一个号码。这是我的密码:

    // GET: Members/SendBatch
    public ActionResult SendBatch()
    {

        return View();
    }


    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult SendBatch(Membership member)
    {
        var db = new ChurchContext();
        StreamReader objReader;
        WebClient client = new WebClient();

        string mess = member.Message;
        string cell = member.Cell;
        string pass = "xxxx";
        string user = "xxxx";
        string selectministries = member.SelectMinistries;
        string pathtoministries = "";

        pathtoministries = GetMinisry(selectministries);

        if (pathtoministries == "Youth")
        {

            var youthtable = from e in db.Youths
                             select e;
            var Entyouth = youthtable.ToList();


            foreach (Youth y in Entyouth)
            {
                string youthcell = y.ContactMobile.ToString();
                cell = youthcell;


            }


        }

      string baseurl = "http://bulksms.2way.co.za/eapi/submission/send_sms/2/2.0?" +
     "username=" + user + "&" +
     "password=" + pass + "&" +
     "message=" + mess + "&" +
     "msisdn=" + cell;

        WebRequest wrGETURL;
        wrGETURL = WebRequest.Create(baseurl);
        try
        {
            Stream objStream;
            objStream = wrGETURL.GetResponse().GetResponseStream();
            objReader = new StreamReader(objStream);
            objReader.Close();
        }
        catch (Exception ex)
        {
            ex.ToString();
        }

        return View("Index", member);

    }


    public static string GetMinisry(string ministry)
    {
        string membership = "";


        switch (ministry)
        {
            case "Youth":
                membership = "Youth";
                break;
            case "Children":
                membership = "Children";
                break;

            case "Men":
                membership = "Men";
                break;

            case "Women":
                membership = "Women";
                break;

            case "Visitors":
                membership = "Visitors";
                break;
            case "Members":
                membership = "Members";
                break;

        }

        return membership;
    }
我想获取所有电话号码并将其分配给cell variable,然后分配给sms api并发送批量短信。

试试这个(脏的,但可以完成任务):

string mess=member.Message;
字符串单元格=member.cell;
List cellNumbers=新列表()//号码表
字符串pass=“xxxx”;
字符串user=“xxxx”;
字符串selectDeparties=member.selectDeparties;
字符串pathtoministries=“”;
pathtoministries=GetMinistry(选择Ministry);
if(pathtoministries==“Youth”)
{
var youthtable=来自数据库中的e
选择e;
var Entyouth=youttable.ToList();
foreach(青年中的青年)
{
字符串youthcell=y.ContactMobile.ToString();
细胞=青年细胞;
单元格编号。添加(单元格);
}
}
foreach(cellNumbers中的字符串号)//发送所有短信
{
字符串baseurl=”http://bulksms.2way.co.za/eapi/submission/send_sms/2/2.0?" +
“username=“+user+”&”+
“password=“+pass+”&”+
“message=“+mess+”&”+
“msisdn=”+编号;
WebRequest-wrGETURL;
wrGETURL=WebRequest.Create(baseurl);
尝试
{
流对象流;
objStream=wrGETURL.GetResponse().GetResponseStream();
objReader=新的StreamReader(objStream);
objReader.Close();
}
捕获(例外情况除外)
{
例如ToString();
}
}

您有一个循环,在每个迭代中覆盖
单元格
,即使
单元格
收到了您需要的所有值,所有值都被下一个值覆盖,但最后一个值除外。循环完成后,您将使用
单元格的最后一个值发送请求。这就是为什么你有一种错觉,认为你得到了一个单一的价值。实际上,您已经获得了所有的值,但是在使用它们之前犯了覆盖它们的错误。解决方案是在周期内而不是在周期后发送请求,如下所示:

// GET: Members/SendBatch
public ActionResult SendBatch()
{

    return View();
}


[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SendBatch(Membership member)
{
    var db = new ChurchContext();
    StreamReader objReader;
    WebClient client = new WebClient();

    string mess = member.Message;
    string cell = member.Cell;
    string pass = "xxxx";
    string user = "xxxx";
    string selectministries = member.SelectMinistries;
    string pathtoministries = "";

    pathtoministries = GetMinisry(selectministries);

    if (pathtoministries == "Youth")
    {

        var youthtable = from e in db.Youths
                         select e;
        var Entyouth = youthtable.ToList();


        foreach (Youth y in Entyouth)
        {
            string youthcell = y.ContactMobile.ToString();
            cell = youthcell;



  string baseurl = "http://bulksms.2way.co.za/eapi/submission/send_sms/2/2.0?" +
 "username=" + user + "&" +
 "password=" + pass + "&" +
 "message=" + mess + "&" +
 "msisdn=" + cell;

    WebRequest wrGETURL;
    wrGETURL = WebRequest.Create(baseurl);
    try
    {
        Stream objStream;
        objStream = wrGETURL.GetResponse().GetResponseStream();
        objReader = new StreamReader(objStream);
        objReader.Close();
    }
    catch (Exception ex)
    {
        ex.ToString();
    }

    return View("Index", member);

        }


    }
}


public static string GetMinisry(string ministry)
{
    string membership = "";


    switch (ministry)
    {
        case "Youth":
            membership = "Youth";
            break;
        case "Children":
            membership = "Children";
            break;

        case "Men":
            membership = "Men";
            break;

        case "Women":
            membership = "Women";
            break;

        case "Visitors":
            membership = "Visitors";
            break;
        case "Members":
            membership = "Members";
            break;

    }

    return membership;
}

谢谢各位,你们的回答解决了我的问题,希望以后访问此页面时遇到类似问题的人能尽快得到帮助。

你们想做各种事情,但只是不断地给同一个单变量单元格赋值。只需在for each循环中执行您想要执行的操作。您正在从数据库中获取所有信息,但您正在将其全部丢弃(除了最后一个…),因为您正在为每次迭代覆盖循环中单元格变量的值。非常感谢,它工作得很好,我能够从数据库中检索所有数字并发送批量短信。@Haro欢迎您。如果这个答案解决了你的问题,你可以考虑接受它作为正确的答案,让未来的访问者在这个页面上浏览一个类似问题的解决方案。我该怎么做?@在你问的问题的答案左边的HARO会找到一个灰色的复选框。如果你点击它,你就会接受答案。一个被接受的答案是绿色的复选框,这样访问者就可以看到是否有一个被接受的正确解决方案。它也工作得很好,它可以从数据库中获取所有号码,我可以通过批量短信向所有号码发送消息,你节省了我的时间。不客气。如果我可以建议的话,将数字检索和批处理SMS分为两个功能。这将更容易调试。如果您觉得我们的答案有用,请投票:)
// GET: Members/SendBatch
public ActionResult SendBatch()
{

    return View();
}


[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SendBatch(Membership member)
{
    var db = new ChurchContext();
    StreamReader objReader;
    WebClient client = new WebClient();

    string mess = member.Message;
    string cell = member.Cell;
    string pass = "xxxx";
    string user = "xxxx";
    string selectministries = member.SelectMinistries;
    string pathtoministries = "";

    pathtoministries = GetMinisry(selectministries);

    if (pathtoministries == "Youth")
    {

        var youthtable = from e in db.Youths
                         select e;
        var Entyouth = youthtable.ToList();


        foreach (Youth y in Entyouth)
        {
            string youthcell = y.ContactMobile.ToString();
            cell = youthcell;



  string baseurl = "http://bulksms.2way.co.za/eapi/submission/send_sms/2/2.0?" +
 "username=" + user + "&" +
 "password=" + pass + "&" +
 "message=" + mess + "&" +
 "msisdn=" + cell;

    WebRequest wrGETURL;
    wrGETURL = WebRequest.Create(baseurl);
    try
    {
        Stream objStream;
        objStream = wrGETURL.GetResponse().GetResponseStream();
        objReader = new StreamReader(objStream);
        objReader.Close();
    }
    catch (Exception ex)
    {
        ex.ToString();
    }

    return View("Index", member);

        }


    }
}


public static string GetMinisry(string ministry)
{
    string membership = "";


    switch (ministry)
    {
        case "Youth":
            membership = "Youth";
            break;
        case "Children":
            membership = "Children";
            break;

        case "Men":
            membership = "Men";
            break;

        case "Women":
            membership = "Women";
            break;

        case "Visitors":
            membership = "Visitors";
            break;
        case "Members":
            membership = "Members";
            break;

    }

    return membership;
}