Asp.net MVC,4.0 - Ajax,更新后字段值被覆盖

时间:2013-10-15 16:44:47

标签: ajax asp.net-mvc

我正在玩一些ajax,并且经历了一个非常奇怪且对我不合逻辑的错误。

我正在表格中显示一个包含在表格中的事件列表。每个事件都有一个唯一的ID(EventID)。按下按钮时,这将提交给操作。 现在,使用动作返回的部分视图更新了表格周围的div。

问题

重新加载视图时,包含字段EventID的所有HiddenField现在都包含与之相同的EventID。提交给行动的那个

我尝试在视图中放置断点,以查看HiddenField中放置的值。这里看到正确的id实际设置为字段。但是当页面更新时,所有隐藏字段都包含与最初提交给操作的字段相同的eventid。

部分视图:_Events

@model SeedSimple.Models.ViewModelTest

<table class="table table-striped table-bordered table-condensed">

 @foreach (var item in Model.events)
        {
           @using (Ajax.BeginForm("AddAttendantToEvent", "MadklubEvents", new AjaxOptions()
                        {
                            HttpMethod = "post",
                            UpdateTargetId = "tableevents"
                        }))
                {

                    @Html.Hidden("EventID", item.MadklubEventID);            
                    <input type="submit" value="Join!" id="join" class="btn" />                             
                }

           @using (Ajax.BeginForm("RemoveAttendantFromEvent", "MadklubEvents", new AjaxOptions()
                {
                    HttpMethod = "post",
                    UpdateTargetId = "tableevents"
                }))
                {

                    @Html.Hidden("EventID", item.MadklubEventID);

                    <input type="submit" value="Leave" class="btn" />

                }

        }
</table>

AddAttendantToEvent操作:

        [HttpPost]
        [Authorize]
        public ActionResult AddAttendantToEvent(int EventID)
        {

            if (ModelState.IsValid)
            {
                var uow = new RsvpUnitofWork();

                var currentUser = WebSecurity.CurrentUserName;
                var Event = uow.EventRepo.Find(EventID);
                var user = uow.UserRepo.All.SingleOrDefault(u => u.Profile.UserName.Equals(currentUser));
                user.Events.Add(Event);
                Event.Attendants.Add(user);
                uow.Save();
                ViewModelTest viewmodel = new ViewModelTest();
                viewmodel.events = madklubeventRepository.AllIncluding(madklubevent => madklubevent.Attendants).Take(10);
                viewmodel.users = kitchenuserRepository.All;

                return PartialView("_Events", viewmodel);
            }
            else
            {
                return View();
            }
        }

将EventID 4提交给操作

后,所有输入字段的外观如何
<input id="EventID" name="EventID" type="hidden" value="4"> 

我怀疑,这是由于ajax调用的一些副作用,我不知道。 任何对这个问题的启发都将非常感激:)

0 个答案:

没有答案