問題:如何使用 Ajax 將路由值與表單一起傳遞給控制器???
我通常像這樣使用 Ajax 提交表單
function AjaxFormSubmit(frm) {
var form = `#${frm}`;
$(form).submit(function (e) {
e.preventDefault();
var actionUrl = $(form).attr('action');
$.ajax({
type: "POST",
url: actionUrl,
processData: false,
contentType: false,
data: $(form).serialize(),
success: function (data) {
alert(data);
}
});
});
}
用法 :
<button onclick="AjaxFormSubmit('formName')" class="btn btn-primary">Create</button>
表格本身
<form id="formName" asp-action="Create" asp-route-id="somedata">
.... some fields
然后我成功提交了表單,但我從來沒有得到路由值asp-route-id
我像這樣在 C# 控制器端接收它
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create(TheModel modelName, [FromQuery]string id)
{
......
return Json(id);
}
要么 ... [FromRoute]string id
他們都沒有作業
我得到一個值為 null 的空白頁面!
最后,如何使用 Ajax 將路由值與表單一起傳遞給控制器???
uj5u.com熱心網友回復:
基本上,如果我們想使用表單提交資料到我們的服務器,我們這樣寫你的代碼,但不集成ajax,在我的代碼片段中,我添加了2個按鈕,一個是使用表單資料提交,另一個是使用ajax發送資料:

@model TestFormModel
<div class="row">
<div class="col-md-4">
<form method="post" id="formName" asp-action="CreateAction" asp-route-id="somedata">
<div class="form-group">
<label asp-for="prop1" class="control-label"></label>
<input asp-for="prop1" class="form-control" />
</div>
<div class="form-group">
<label asp-for="prop2" class="control-label"></label>
<input asp-for="prop2" class="form-control" />
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
<button onclick="AjaxFormSubmit('formName')" class="btn btn-primary">CreateByAjax</button>
</div>
</div>
<script>
function AjaxFormSubmit(frm) {
var form = `#${frm}`;
console.log($(form).serialize());
$.ajax({
type: "POST",
url: "https://localhost:44385/home/CreateAction",
data: {
prop1:$("#prop1").val(),
prop2:$("#prop2").val(),
id:"somedata"
},
success: function (data) {
alert(data);
}
});
}
</script>
添加控制臺日志,我們可以看到表單中沒有id屬性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/434873.html
標籤:jQuery 阿贾克斯 asp.net 核心 路线 表格提交
上一篇:如何將pythonapi或本地資料呼叫到jslibgoogle.visualization.DataTable()中?
