OK, jag har ett formulär och i den har jag lagt en MultiSelectList, listan hämtar namn och epost ur en databas, meningen är att man ska kunna välja dom personer man vill notifiera om en ändring som gjorts, MVCmailer använder jag för att skicka.
Problemet är att den kod jag har endast skickar åt en person oavsett hur många som är valda ur listan. Hade hoppats att alla valda skulle få en epost, men endast den man väljer först får en epost.
Controllern som sköter allt ser ut såhär:
[HttpPost]
public ActionResult Edit(Deviation deviation, string ePost)
{
if (ModelState.IsValid)
{
db.Entry(deviation).State = EntityState.Modified;
db.SaveChanges();
var mailer = new UserMailer();
var msg = mailer.WelcomeMessage(email: ePost);
msg.Send();
return RedirectToAction("Index");
//return RedirectToAction("Index");
}
return View(deviation);
}
Vet inte riktigt vad jag kan göra här nu, kanske jag går helt fel tillväga. I en gammal ASP program jag gjorde så hade jag en hög med kryssrutor istället med samma namn och i koden sen körde jag en SQL som såg ut såhär:
"SELECT ePost FROM Users WHERE ID IN ("& request("epost") &") "
Och bara loopade igenom epostkoden, lätt som en plätt... Kan något liknande göras i MVC?
Jahapp, löste det själv så här är hur jag gjorde det, för någon som undrar samma sak:
[HttpPost]
//int[] Epost är då vilka userId man har valt i view:n
public ActionResult Edit(Deviation deviation, int[] Epost)
{
if (ModelState.IsValid)
{
db.Entry(deviation).State = EntityState.Modified;
db.SaveChanges();
//Här börjar då koden som skickar posten, denna bit hämtar addresserna ur tabellen
int[] ePostList = Epost;
var myEpost = from p in db.Users
where ePostList.Contains(p.UserID)
select p;
myEpost.ToList();
//Sen loopar vi genom mvcmailer koden
foreach (var item in myEpost)
{
var mailer = new UserMailer();
var msg = mailer.WelcomeMessage(email: item.Epost);
msg.Send();
}
//tillbaka till startsidan
return RedirectToAction("Index");
}
return View(deviation);
}
253 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2