微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

[ASP.NET-MVC]如何在同一控制器中创建和编辑数据

如何解决[ASP.NET-MVC]如何在同一控制器中创建和编辑数据

我有2个数据库,第一个 Events ,第二个是 EventParticipants 因此,一旦EventParticipant将新数据添加数据库中,我想更新 Events 数据库中的当前参与者数量。我尝试放置2个共享相同名称的Controller,即 Join ,但其中一个正在使用[HttpPost],另一个正在使用[HttpPut],但无法正常工作我试图将它们组合在一起,但是事件数据库中仍然没有任何变化。

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Join([Bind(Include = "DateAdded,IC,EventsId")] EventParticipants eventParticipants,[Bind(Include = "Current_Participant")] Events events)
        {
            if (ModelState.IsValid)
            {
                db.EventParticipants.Add(eventParticipants);
                db.Entry(events).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(eventParticipants);
        }

这是视图

@using (Html.BeginForm("Join","JoinEvent",FormMethod.Post,new { Model }))
{
    DBContext db = new DBContext();

    @Html.AntiForgeryToken()
    @Html.HiddenFor(model => model.EventsId)

    <input name="DateAdded" type="hidden" value="@DateTime.Now">
    <input name="IC" type="hidden" value="@Session["IC"]">
    <input name="EventsId" type="hidden" value="@Html.displayFor(model => model.EventsId)">

            var plus = Model.Current_Participant + 10;
    <input name="Current_Participant" type="text" value="@plus" />

    <input type="submit" value="Join Now" class="btn btn-default" />

}

解决方法

您可以这样做,可以使用2个dbcontext指向2个数据库,

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Join([Bind(Include = "DateAdded,IC,EventsId")] EventParticipants eventParticipants,[Bind(Include = "Current_Participant")] Events events)
        {
            if (ModelState.IsValid)
            {
                db.EventParticipants.Add(eventParticipants);
                db.Entry(events).State = EntityState.Modified;//this should be insert EventParticipants
                db.SaveChanges();

                dbWithEventsContext.Events.Add(events); //separate dbcontext pointing to Events db
                dbWithEventsContext.Entry(events).State = EntityState.Modified;
                dbWithEventsContext.SaveChanges();

                return RedirectToAction("Index");
            }

            return View(eventParticipants);
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。