gpt4 book ai didi

c# - MVC 模型未绑定(bind)且表单数据包含 %5B0%5D

转载 作者:行者123 更新时间:2023-12-04 02:32:03 24 4
gpt4 key购买 nike

我正在尝试执行 POST 请求,但我的模型在 POST 上绑定(bind)并且数据为空,
但是我可以在 Request.Form 对象中看到所有这些数据,但是所有的 Keys 都附加了 %5B0%5D.,我猜这会导致这个问题
我试过 Direct Form POST 和 jQuery AJAX POST 都有同样的问题。
这是我的观点。

@model Web_Users

<div class="enroll-step wrap">
<div class="enroll-begin thumbnail" style="padding:20px;">

<h6 class="text-danger">@title</h6><br />
@using (Ajax.BeginForm("Update", "User", null, new AjaxOptions { HttpMethod = "POST", OnComplete = "MemberUpdateComplete(xhr, this)" }, new { id = "enroll-form", role = "form" }))
{
@Html.HiddenFor(x => x.UserId)
<div class="row">
<div class="col-sm-6 col-xs-12">
<div class="form-group">
@Html.LabelFor(x => x.FirstName, Resources.Members.FirstName, new { @class = "sr-only" })
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
@Html.TextBoxFor(x => x.FirstName, new { @class = "form-control", placeholder = Resources.Members.FirstName, @readonly = "readonly" })
</div>
@Html.LabelFor(x => x.LastName, Resources.Members.LastName, new { @class = "sr-only" })
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
@Html.TextBoxFor(x => x.LastName, new { @class = "form-control", placeholder = Resources.Members.LastName, @readonly = "readonly" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(x => x.DOB, new { @class = "sr-only" })
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
@Html.TextBoxFor(x => x.DOB, "{0:yyyy-MM-dd}", new { @class = "form-control", placeholder = "DOB" })
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="text-center">
<button class="btn btn-lg btn-primary" type="submit" data-loading-text="<img src='@Url.Content("~/Content/images/loader.gif")' /> Save </button>

</div>
</div>
</div>
这是我的 Controller
        [HttpPost]
public JsonResult Update(Web_Users models)
{
return Json(ChangeModel.UpdateUsers(models));
}
我已经尝试过这个 Jquery POST
<script>
$(document).ready(function () {
$("#btnsubmit").click(function (e) {
//Serialize the form datas.
var frmdata = $('form#enroll-form').serialize();
$.ajax({
url: "/User/Update",
type: "POST",
dataType: 'json',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
data: frmdata
});
});
});

最佳答案

我明白了,实际上 %5B0%5D.[0]. 的编码文本,而且您的 View 似乎正在绑定(bind) List 的数据,因此首先您需要确保这一点。但我可以看到你有正确的 View (不是列表)。或者,如果对您有用,请尝试这两种解决方案中的任何一种。
1 :将您的 jQuery AJAX 代码更新为这样,它将从表单数据中删除所有这些编码文本

<script>
$(document).ready(function () {
$("#btnsubmit").click(function (e) {
//Serialize the form datas.
var frmdata = $('form#enroll-form').serialize().split('%5B0%5D.').join('');
$.ajax({
url: "/User/Update",
type: "POST",
dataType: 'json',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
data: frmdata
});
});
});

2 :更改您的更新方法,并将参数作为列表模型而不是 Web_Users 模型并采用第一个值
[HttpPost]
public JsonResult Update(List<Web_Users> models)
{
return Json(ChangeModel.UpdateUsers(models.FirstOrDefault()));
}

关于c# - MVC 模型未绑定(bind)且表单数据包含 %5B0%5D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63704080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com