我有一个对话框,其中有选项卡。在其中一个选项卡中,显示用户输入的地址。还有一个按钮允许用户添加新地址。当用户单击按钮时,当前选项卡的内容将替换为“添加”视图。
我在这里想要完成的是允许用户添加地址,一旦他们点击确定,表单应该通过 AJAX 调用提交,然后标签应该用“索引”视图的内容更新(显示用户的地址)。
不幸的是,这不能正常工作。它不是通过 AJAX 调用提交表单,而是执行常规的发布操作并在白色背景上显示索引视图,而不是在选项卡中显示它。
这是我的代码:
[HttpPost]
public ActionResult Add(AddressDto model)
{
if(!ModelState.IsValid)
{
return PartialView(model);
}
Area area = null;
if(!string.IsNullOrEmpty(model.Area))
{
area = _addressService.GetAreaByName(model.Area);
}
var newAdd = new Address
{
Details = model.Details,
Name = model.Name,
IsDefaultAddress = false,
CountryName = _addressService.GetCountryById(int.Parse(model.Country)).Name,
User = _helper.GetUserFromSession(HttpContext.User.Identity.Name)
};
if(area != null)
area.Addresses.Add(newAdd);
else
_addressService.Create(newAdd);
_unitOfWork.Commit();
var indexViewModel = PrepareIndexView();
return PartialView("Index", indexViewModel);
}
private UserLocationViewModel PrepareIndexView()
{
var nickname = this.HttpContext.User.Identity.Name;
var user = _helper.GetUserFromSession(nickname, true);
var viewModel = Mapper.Map<User, UserLocationViewModel>(user);
return viewModel;
}
这是我开始表格的方式:
@using (Ajax.BeginForm("Add", "Address", new AjaxOptions { UpdateTargetId = "ui-tabs-2", InsertionMode = InsertionMode.Replace, HttpMethod = "POST" }))
那么我的设置有什么问题?