如何用Javascript扩展formdata并将其发送到控制器
How to extend formdata with Javascript and post it to the Controller
我如何用一个变量扩展Javascript中的formdata,以便在我的控制器POST操作中可用。
所以我想做的是,添加一个变量update(这是一个bool),并将此与我的formdata发送到控制器。
这是我的。js文件的代码&控制器代码
bootbox.confirm("Are you sure you want to override this Quotation?", function (result) {
if (result === null) {
//do nothing
} else if (result) {
if (!$form[0].checkValidity()) {
return false;
}
var btn = $('#saveQuotationForm');
btn.attr('onclick', '');
btn.attr('class', 'glyphicon glyphicon-floppy-save');
btn.text('Saving...');
var formurl = $form.attr('action');
var formdata = $form.serialize();
console.log(formurl + " =formurl");
console.log(formdata + " =formdata");
//tricky part, i want to do something like this:
//var update = new boolean(false);
//formdata.append(update, true); --> but this is obviously not the way to go :), anyone got idea's?**
$.post(formurl, formdata, function (data) {
if (data && data.State === 'success') {
btn.attr('class', 'glyphicon glyphicon-floppy-saved');
btn.text('Saved');
$('#placeholderAlert').append('<div class="alert alert-success" role="alert"><strong>Saved</strong> ' + data.Message + '</div>');
} else {
btn.attr('class', 'glyphicon glyphicon-floppy-remove');
btn.text('Saving failed');
}
});
}
});
[HttpPost]
[ValidateAntiForgeryToken]
public JsonNetResult Products_Quotation_Save(vmProducts_Quotation_Save quotation)
{
quotation.DateCreated = DateTime.Now;
QuotationCache.Instance.SaveQuotation(GetClientCode(HttpContext), GetUserName(HttpContext), quotation, MuseContext);
return JsonNet(new { State = "success", Message = "Quotation '" + quotation.Name + "' has been saved with reference " + quotation.ShortCode + ". <a href=" + Url.Action(RouteItemAction.ResaPlus_Quotations) + " class='"alert-link'">Go to overview</a>" });
}
编辑:这确实是另一个问题的重复,为此道歉。我通过这里提供的答案之一解决了这个问题:jquery表单。Serialize和其他参数
所以我创建了一个变量,并添加了$。参数,然后在我的控制器中我可以访问该参数。
var update = { 'update': true };
var formurl = $form.attr('action');
var formdata = $form.serialize() + '&' + $.param(update);
$.post(formurl, formdata, function (data) {
});
[HttpPost]
[ValidateAntiForgeryToken]
public JsonNetResult Products_Quotation_Save(vmProducts_Quotation_Save quotation, bool update)
{
}
您可以使用serializeArray()
来创建一个可更新的对象。http://api.jquery.com/serializeArray/
var formdata = $form.serializeArray();
formdata.push({name: 'update', value: true});
$.post(formurl, formdata, function (data)
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 从控制器返回后Ajax启动事件激发
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 如何在单击复选框后调用控制器方法
- 如何用更合适的内容替换document.write
- 在控制器和数据对象之间同步数据
- 将Javascript数组发送到控制器ASP.NET MVC
- 角度控制器结构
- 如何在Jquery中发布后将值从视图返回到控制器
- 将值从html传递到AngularJS控制器
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 如何用Jasmine测试AngularJS控制器在Promise中返回的值
- 如何用Javascript扩展formdata并将其发送到控制器
- 如何用常用代码重构angularjs控制器
- 你如何用转移能量(蠕变)来瞄准房间控制器
- 如何用JsTestDriver测试AngularJS控制器
- 如何用内联控制器测试指令范围上的值
- 如何用Jquery传递数组到MVC控制器
- 如何用Angular的方式将更新后的对象从Service发送到指令控制器函数