0

選択したチェックボックスに基づいて、複数のユーザーに電子メールを送信する必要があります。

コントローラーで:

 [HttpGet]
        public ActionResult ChkBxSendMail(int[] check)
        {
            return View();
        }

    [HttpPost]
    public ActionResult ChkBxSendMail(int[] check, Profile profile, mail email)
    {
        foreach (var item in check)
        {
            var dbprofile = db.Profile.Single(p => p.ProfileId == item);
            string Emailid = dbprofile.EmailId;

            //var mailid = from p in db.Profile where p.ProfileId == id select p.EmailId;

            MailMessage msg = new MailMessage();
            MailAddress fromAddress = new MailAddress("xxxx");
            msg.From = fromAddress;
            msg.To.Add(Emailid);
            msg.Subject = email.Subject;
            msg.Body = email.Body;
            msg.Priority = MailPriority.High;

            SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
            client.EnableSsl = true;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.Credentials = new NetworkCredential("xxxxxx", "xxxx");
            client.Send(msg);
        }
        return RedirectToAction("Profiles", "profile");
    }

ビューで:

テーブルの "input type="checkbox" name="check" value="<%: item.ProfileId %>" /> "..

問題
チェックボックスで選択した値をアクションの結果に渡すことができません。

4

2 に答える 2

1

すべてのビューコードを表示できますか html.beginform を使用しましたか?これを試してみてください

<% using (Html.BeginForm("ChkBxSendMail", "here controler name", FormMethod.Post))
 { %>  
<table>
<tr> </tr> 
<% foreach (var item in Model) { %>
<tr> <td> <input type="checkbox" name="check" value="<%: item.ProfileId %>" /> </td>
<td> <%: Html.DisplayFor(modelItem => item.FirstName) %> </td>
<td> <%: Html.DisplayFor(modelItem => item.LastName) %> </td> 
 </tr> 
 </table>
 <input type="submit"/>
<% } %>
<%} %>
于 2012-10-04T06:27:34.670 に答える
0

チェックボックスは独立しています。同じ name 属性を持つ別のチェックボックスを使用しないでください。

また、さまざまなチェックボックスの値がコントローラーの Request.Form["nameOfCheckbox"] で利用できるようにする必要があります。

于 2012-10-04T06:40:21.410 に答える