我有个问题。我正在使用表单来创建一些东西,但是当我单击提交表单时,我调用了一个更改路由值的 js 函数。这很好用,但是我第一次尝试提交表单时,只有路由值发生了变化。我第二次尝试提交表单时,表单确实以正确的值发布。
如何更改此代码,以便表单更改路由值并在第一次单击时执行 Post(使用正确的值)。
形式:
@using (Ajax.BeginForm("CreateFunctiebeschrijvingPartial", "Functiebeschrijving", null, new AjaxOptions { UpdateTargetId = "Functiebeschrijving", OnBegin = "return ConfirmDone()", OnSuccess = "handleSuccess" }, new { @id = "frmID" }))
{
JS:
function ConfirmDone() {
var form = document.getElementById('frmID');
if (confirm("This form saves default as Concept, would you like to save it as completed? 1 = Completed, 2 = Concept")) {
//option 1: save as completed
form.setAttribute('action', addDataToUrl(form.getAttribute('action'), 'sopt', 1));
}
else {
//Option 2: save as concept
form.setAttribute('action', addDataToUrl(form.getAttribute('action'), 'sopt', 2));
}
}
function addDataToUrl(url, name, value) {
var sep = url.indexOf('?') === -1 ? '?' : '&';
return url + sep + name + '=' + value;
}
编辑:
这是我在第一次点击后在 Fiddler2 中得到的
参数字典包含“Evaluatietool.Controllers.FunctieBeschrijvingController”中方法“System.Web.Mvc.ActionResult CreateFunctiebeschrijvingPartial(Evaluatietool.Models.NieuweFunctiebeschrijvingViewModel, Int32)”的不可为空类型“System.Int32”的参数“sopt”的空条目'。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数
第二次单击导致 0 个错误。