我正在玩一些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调用的一些副作用,我不知道。 任何对这个问题的启发都将非常感激:)