kc-*_*dev 3 c# asp.net-mvc model
我正在尝试执行一个POST请求,但是我的模型在 POST 上绑定并且数据为空,但是我可以在 Request.Form 对象中看到所有这些数据,但是所有的键都%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>
Run Code Online (Sandbox Code Playgroud)
这是我的控制器
[HttpPost]
public JsonResult Update(Web_Users models)
{
return Json(ChangeModel.UpdateUsers(models));
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这个 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
});
});
});
Run Code Online (Sandbox Code Playgroud)
我明白了,实际上%5B0%5D.是编码文本,[0].并且您的视图似乎正在绑定列表的数据,因此首先您需要确保这一点。但我可以看到你有正确的视图(不是列表)。或者,如果对您有用,请尝试这两种解决方案中的任何一种。
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
});
});
});
Run Code Online (Sandbox Code Playgroud)
2:更改您的更新方法,并将参数作为列表模型而不是 Web_Users 模型并采用第一个值
[HttpPost]
public JsonResult Update(List<Web_Users> models)
{
return Json(ChangeModel.UpdateUsers(models.FirstOrDefault()));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |