我有一个带有2个动作的控制器:
date = anydate (2017-11-03)
time = currenttime (Time.now)
Time.zone = current_user.time_zone
Required = date + time (to current_user.timezone)
Create.cshtml 是:
public class OrganizationUnitsController : Controller
{
public ActionResult Create()
{
// return empty form
return View();
}
[HttpPost]
public ActionResult Save(OrganizationUnitViewModel unitViewModel)
{
// Save the new unit to the DB
return View();
}
}
问题是当我单击保存按钮时,生成unitViewModel并将表单传递给保存操作的javascript代码未被调用,并且调用了 Create 操作。
将 @ Html.BeginForm()中的控制器操作更改为null并不能解决问题。
我该如何解决?
答案 0 :(得分:1)
Stephen Muecke正确<a href="" class="btn btn-primary">Save</a>
有问题,点击它会导致GET
,尝试将其替换为submit
输入类型。
<input type="submit" class="btn btn-primary" value="Save" />
并使用e.preventDefault();
因为stopPropagation
阻止事件冒泡事件链,
而preventDefault
会阻止浏览器对该事件进行默认操作。
$('#form').on('submit',function (e) {
var actionUrl = this.action;
e.stopPropagation();
e.preventDefault();
$.ajax({
url: actionUrl,
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({
Name: $('#Name').val(),
Admin: JSON.stringify({ 'FullDescription': $('#Admin').val() }),
Members: JSON.stringify( $('#users_list_box').val() )
});
});