Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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
Asp.net mvc 如何在表单提交时将复选框值传递给控制器,然后将数据返回视图?_Asp.net Mvc_Post_Razor_Asp.net Mvc 5 - Fatal编程技术网

Asp.net mvc 如何在表单提交时将复选框值传递给控制器,然后将数据返回视图?

Asp.net mvc 如何在表单提交时将复选框值传递给控制器,然后将数据返回视图?,asp.net-mvc,post,razor,asp.net-mvc-5,Asp.net Mvc,Post,Razor,Asp.net Mvc 5,在我的视图中,我在一些用户记录前面放置了一个复选框。当我选中一个复选框并单击提交按钮时,选中的复选框值(用户Id)将发送到控制器。目前,我成功地在我的模型中获取电子邮件,但无法将DB结果恢复到视图中 客户视图: @using (Html.BeginForm()) { <table class="table table-responsive"> @foreach (var s in Model) { <td id="list"><input type="c

在我的视图中,我在一些用户记录前面放置了一个复选框。当我选中一个复选框并单击提交按钮时,选中的复选框值(用户Id)将发送到控制器。目前,我成功地在我的模型中获取电子邮件,但无法将DB结果恢复到视图中

客户视图:

@using (Html.BeginForm())
{ 
 <table class="table table-responsive">
 @foreach (var s in Model)
 {
  <td id="list"><input type="checkbox" name="ids" id="ids" value="@s.Id" /></td>  
 }
  <tr>
    <td><button class="btn btn-primary" id="sendmail" type="submit">Send Email To Customers</button></td>
  </tr>
 </table>      
}
@if (TempData["Emails"] != null)
{
<span class="alert-info">@TempData["Emails"]</span>
}
public Customers GetEmails(int[] ids)
    {
        Customers ee = new Customers();
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["mvc"].ConnectionString);
        string qry = "select Email from users where Id IN(" + string.Join(",", ids.ToArray()) + ")"; 
        SqlCommand cmdd = new SqlCommand(qry, con);
        con.Open();
        SqlDataReader rdd = cmdd.ExecuteReader();
        while (rdd.Read())
        {
          ee.Email = rdd["Email"].ToString();  // I am able to get all emails
        }
        rdd.Close();
        cmdd.ExecuteNonQuery();
        con.Close();
        return ee;
    }
型号:

@using (Html.BeginForm())
{ 
 <table class="table table-responsive">
 @foreach (var s in Model)
 {
  <td id="list"><input type="checkbox" name="ids" id="ids" value="@s.Id" /></td>  
 }
  <tr>
    <td><button class="btn btn-primary" id="sendmail" type="submit">Send Email To Customers</button></td>
  </tr>
 </table>      
}
@if (TempData["Emails"] != null)
{
<span class="alert-info">@TempData["Emails"]</span>
}
public Customers GetEmails(int[] ids)
    {
        Customers ee = new Customers();
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["mvc"].ConnectionString);
        string qry = "select Email from users where Id IN(" + string.Join(",", ids.ToArray()) + ")"; 
        SqlCommand cmdd = new SqlCommand(qry, con);
        con.Open();
        SqlDataReader rdd = cmdd.ExecuteReader();
        while (rdd.Read())
        {
          ee.Email = rdd["Email"].ToString();  // I am able to get all emails
        }
        rdd.Close();
        cmdd.ExecuteNonQuery();
        con.Close();
        return ee;
    }

让我们从一些虚拟数据和测试用例场景开始

 public ActionResult Test()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Test(MyModel model)
    {
        TempData["test"] = GetData();
        return View();
    }

    public List<string> GetData() //method for get data
    {
        List<string> mylist = new List<string>(new string[] { "element1", "element2", "element3" });
        return mylist;
    }
公共操作结果测试()
{
返回视图();
}
[HttpPost]
公共行动结果测试(MyModel)
{
TempData[“test”]=GetData();
返回视图();
}
public List GetData()//获取数据的方法
{
List mylist=新列表(新字符串[]{“element1”、“element2”、“element3”});
返回mylist;
}
和剃刀视图

var data = TempData["test"] as List<string>;
if (data != null)
{
    foreach (var a in data)
    {
        W‌riteLiteral(@"<li>"); /*​*/
        W‌rite(a); /*​*/
        W‌riteLiteral(@"</li>");
    }
}
var data=TempData[“测试”]作为列表;
如果(数据!=null)
{
foreach(数据中的var a)
{
W‌文字(@“
  • ”)/*​*/ W‌仪式(a)/*​*/ W‌文字(@“
  • ”); } }
    现在在您的场景中,我假设您的
    GetEmail
    只返回一组字符串,因此将您的返回类型更改为Customer对象,将其更改为
    list
    as
    public list GetEmails()
    并将其返回为字符串列表


    然后,您需要在razor视图中执行的所有操作都类似于测试用例场景。

    好吧,让我们从一些虚拟数据和测试用例场景开始

     public ActionResult Test()
        {
            return View();
        }
    
        [HttpPost]
        public ActionResult Test(MyModel model)
        {
            TempData["test"] = GetData();
            return View();
        }
    
        public List<string> GetData() //method for get data
        {
            List<string> mylist = new List<string>(new string[] { "element1", "element2", "element3" });
            return mylist;
        }
    
    公共操作结果测试()
    {
    返回视图();
    }
    [HttpPost]
    公共行动结果测试(MyModel)
    {
    TempData[“test”]=GetData();
    返回视图();
    }
    public List GetData()//获取数据的方法
    {
    List mylist=新列表(新字符串[]{“element1”、“element2”、“element3”});
    返回mylist;
    }
    
    和剃刀视图

    var data = TempData["test"] as List<string>;
    if (data != null)
    {
        foreach (var a in data)
        {
            W‌riteLiteral(@"<li>"); /*​*/
            W‌rite(a); /*​*/
            W‌riteLiteral(@"</li>");
        }
    }
    
    var data=TempData[“测试”]作为列表;
    如果(数据!=null)
    {
    foreach(数据中的var a)
    {
    W‌文字(@“
  • ”)/*​*/ W‌仪式(a)/*​*/ W‌文字(@“
  • ”); } }
    现在在您的场景中,我假设您的
    GetEmail
    只返回一组字符串,因此将您的返回类型更改为Customer对象,将其更改为
    list
    as
    public list GetEmails()
    并将其返回为字符串列表


    然后,您需要在类似razor视图的测试用例场景中执行的所有操作。

    我建议使用表值参数,而不是像那样构建字符串(这是一种易受sql注入攻击的模式)。使用它更容易、更安全。我会更改代码,现在只是本地测试,谢谢。所以基本上你的get(view)方法需要email值,不是吗?@ZiaulKabirFahad email values based selected id'sis now
    public Customers getemail(int[]ids)
    基于ID返回电子邮件?我建议使用表值参数,而不是像那样构建字符串(这是一种易受sql注入攻击的模式)。使用它更容易、更安全。我会更改代码,现在只是本地测试,谢谢。所以基本上你的get(view)方法需要email值,不是吗?@ZiaulKabirFahad email values based selected id's now
    public Customers getemail(int[]ids)
    基于ids返回电子邮件?返回列表;对我来说,一起处理这些电子邮件更容易。谢谢:)返回列表;对我来说,一起处理这些电子邮件更容易。谢谢:)