jquery - 将表单序列化为 JObject
问题描述
我有一个页面上有两个表单的 ASP.NET Core 视图。
<form id="form1">
<input name="FirstName" />
<input name="LastName" />
</form>
<form id="form2">
<input name="Address1" />
<input name="Address2" />
</form>
我试图绑定这两种形式的模型是
public class MyModel
{
public string FirstName {get;set;}
public string LastName {get;set;}
public JObject ExtraFields {get;set;}
}
请注意,这ExtraFields
是一种 JObject。是否可以使用 jQuery 提交这些表单,以便将第二个表单form2
设置为ExtraFields
?
解决方案
您可以使用 serialize() 方法序列化表单,然后通过 name 属性接收值。
示例代码如下:
<form asp-action="AddAddress" class="form2">
<div class="form-group">
<label class="control-label">Address1</label>
<input class="form-control" name="Address1" />
</div>
<div class="form-group">
<label class="control-label">Address2</label>
<input class="form-control" name="Address2" />
</div>
<div class="form-group">
<input type="submit" value="Submit" class="btn btn-primary btn-submit" />
</div>
</form>
jQuery 脚本:
jQuery(document).ready(function () {
$(".btn-submit").click(function () {
event.preventDefault();
$.ajax({
type: "POST",
url: "/Home/AddAddress", //remember change the controller to your owns.
data: $("form.form2").serialize(), //serialize the form
success: function (data) {
console.log(data)
},
failure: function (response) {
console.log(response.responseText);
},
error: function (response) {
console.log(response.responseText);
}
});
});
});
控制器方法中的代码:
[HttpPost]
public IActionResult AddAddress(string Address1, string Address2)
{
return View();
}
此外,您还可以使用 JQuery 提取地址,并发送到 action 方法,如下所示:
jQuery(document).ready(function () {
$(".btn-submit").click(function () {
event.preventDefault();
//using an array to store the JOject values.
var stringArray = new Array();
stringArray.push($("input[name='Address1']").val());
stringArray.push($("input[name='Address2']").val());
var postData = { extraFields: stringArray };
$.ajax({
type: "POST",
url: "/Home/AddAddress", //remember change the controller to your owns.
data: postData,
success: function (data) {
console.log(data)
},
error: function (response) {
console.log(response.responseText);
}
});
});
});
Action 方法中的代码:
[HttpPost]
public IActionResult AddAddress(List<string> extraFields)
{
return View();
}
推荐阅读
- python - 如何在循环的每次迭代中使用 for-loop 为 SVR 生成 X_train?
- python-3.x - 将矩形图像投影到弯曲的背景上
- asp.net-core - 如何使用带有自定义参数的 ASP.NET Core 实现 dhtmlxScheduler?
- rest - VMware Rest API 身份验证失败
- python - 使用嵌套的while循环替换列表列表的元素
- oauth-2.0 - Oauth2 PKCE 谁应该生成代码验证器和代码质询
- elasticsearch - 来自术语聚合的子聚合的准确性
- javascript - 未捕获的语法错误:位置 0 处的 JSON 中的意外标记 D
- sql - 是否可以在扳手中进行有效的时间戳排序查询?
- java - 尝试在 JUnit 测试和 Mockito 中使用 when 和 thenReturn 时出错(NullPointerException)