![](/img/trans.png)
[英]Update many-to-many entity with ASP.NET Core MVC MultiSelectList
[英]ASP.NET MVC Entity Framework insert to many-to-many table using MultiSelectList
我有3张桌子:
轮询:
public int PollId { get; set; }
public string PollTitle { get; set; }
public virtual ICollection<Party> Parties { get; set; }
派对
public int PartyId { get; set; }
public string PartyName { get; set; }
public virtual ICollection<Poll> Polls { get; set; }
partysInPoll (两个主键)
* int PartyId
* int PollId
在我的PollController中:
private VoterEntities db = new VoterEntities();
//
// GET: /Polls/Create
public ActionResult Create()
{
ViewBag.PartyId = new MultiSelectList(db.Parties, "PartyId", "PartyName");
return View();
}
//
// POST: /Polls/Create
[HttpPost]
public ActionResult Create(Poll poll)
{
//var parti = db.Parties.Find(partyId);
if (ModelState.IsValid)
{
var pList = new List<Party>();
foreach (var pId in "PartyId")
{
pList.Add(new Party
{
PartyId = pId
});
}
poll.Parties = pList;
db.Polls.Add(poll);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.PartyId = new MultiSelectList(db.Parties, "PartyId", "PartyName", poll.Parties);
return View(poll);
}
我的观点:
@model VoterMVC.Models.Poll
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<div class="editor-label">
@Html.LabelFor(model => model.PollTitle)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.PollTitle)
@Html.ValidationMessageFor(model => model.PollTitle)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Parties)
</div>
<div class="editor-field">
@Html.ListBox("PartyId")
@Html.ValidationMessageFor(model => model.Parties)
</div>
<p>
<input type="submit" value="Create" />
</p>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
现在,大多数工作都像一个咒语,但是foreach循环却没有。 它不会与所选方的视图ListBox通信,并且循环将7(?!)新行添加到“方”表和“ PartiesInPoll”表中。 因此,我想要的当然是让通过视图从ListBox中选择的值通过foreach循环发送,以便PartiesInPoll表得到更新。 我不想将新的聚会添加到聚会表中!!
希望你明白我的意思。 在此问题上停留了几天,非常感谢任何帮助,谢谢!
编辑:如果对此有任何更好的解决方案,请吐出来:)
这段代码看起来不对:
foreach (var pId "PartyId")
它甚至不应该编译。 可能你有
foreach (var pId in "PartyId")
并且此代码遍历“ PartyId”字符串中的字符。 而且恰好有7个。
从列表框中选择PartyId
后,视图将仅将此ID发送到post方法。 在这种情况下,for循环变得毫无用处。 您的大多数问题都来自数据库中的多对多关系。 在此处阅读有关此内容的更多信息。 如果您希望在一次投票中有多个参与方,则可以创建1对*(或*对1)关系,这将为您提供更简便的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.