@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
// Description of forms for my model
//....
//....
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Template template)
{
//some logic
//....
return View(template);
}
viewModel.Save = function () {
var url = $('#frmSave').attr('action');
var token = $("input[name='__RequestVerificationToken']").val();
knockoutExtensions.KnockoutSaveWithAntiForgeryToken(url, viewModel, token);
}(function (m, $) {
m.KnockoutSaveWithAntiForgeryToken = function (url, model, token) {
var submitData = ko.mapping.toJSON(model);
var submitObj = JSON.parse(submitData);
submitObj["__RequestVerificationToken"] = token;
$.ajax({
url: url,
type: 'POST',
data: submitObj,
contentType: "application/x-www-form-urlencoded",
success: function (data) {
if (data.redirect) {
location.href = resolveUrl(data.url);
}
else {
ko.mapping.fromJS(data, model);
}
},
error: function (error) {
alert("There was an error posting the data to the server: " + error.responseText);
}
});
}
}(window.knockoutExtensions = window.knockoutExtensions|| {}, jQuery));