好的,所以,首先我是 asp.net mvc 和 ajax 的新手。我想做的,真的很简单;
我有一个表格,显示登录用户可以参加的事件列表。列表中的每个元素都有一个 ajax.BeginForm() 指向将用户连接到事件的操作。
当用户连接到事件时,页面应该更新,以便在页面上正确显示参加者的数量。
所有,这工作正常。但是,更新页面时发生的情况是,我的 _Layout.cshtml 页面的全部内容都在我在“UpdateTargetId”中指定的“div id="tableevent"' 的副本中复制,以进行更新。
视图中的片段
<div id="tableevents">
<table class="table table-striped table-bordered table-condensed">
//I DISPLAY TABLE ITEMS HERE.
@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" />
}
</table>
</div>
AddAttendantToEvent Action 这可能是我出错的地方。我过去只是通过正常的提交表单将数据发布到此操作,没有 ajax。我在这个动作中没有改变任何东西。
[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();
return RedirectToAction("Index");
}
{
return View();
}
}
索引 重定向到的操作:这是视图模型(包含填充我的表的数据)的位置。
public ViewResult Index()
{
ViewModelTest viewmodel = new ViewModelTest();
viewmodel.events = madklubeventRepository.AllIncluding(madklubevent => madklubevent.Attendants).Take(10);
viewmodel.users = kitchenuserRepository.All;
return View(viewmodel);
}
为什么 div 被复制,为什么我的主 _Layout 页面的全部内容在标签的副本中被复制?
请指出我正确的方向!:)