Asp.Net MVC Ajax 视图模型未更新
Asp.Net MVC Ajax view model not updated
我有一个问题正在做我的头
假设我有一个视图模型
public class PersonVM
{
public int? Id { get; set; }
public string Firstname { get; set; }
}
现在我有一个视图,它有一个输入框,它只捕获Firstname
。
@model PersonVM
<form id="frmCreatePerson">
@Html.Bootstrap().TextBoxFor(p => p.Firstname).Placeholder("Firstname")
@Html.Bootstrap().Button().Id("btnSubmit").Text("Create").AppendIcon("fa fa-arrow-right")
</form>
@{
if(Model.Id != null)
{
Html.Partial("_Results", Model)
}
}
我有一个对控制器的 Ajax 调用,只是为视图模型生成一个新的Id
。
然后,我希望显示更新的视图模型。
$('#btnSubmit').click(function () {
var data = $("#frmCreatePerson").serialize();
$.ajax({
url: '@Url.Action("CreatePerson", "Person")',
type: "POST",
data: data
})
.done(function (data) {
})
.fail(function () {
alert("Unable to create.");
});
});
控制器
[HttpPost]
public ActionResult CreatePerson(PersonVM model)
{
model.id = 1;
return PartialView("_Results", model);
}
_Results
部分视图仅包含
@model PersonVM
@Html.DisplayForModel(Model);
由于某种原因,视图模型未更新,模型仍为空。如何向控制器提交 Ajax 调用,并将更新的视图模型返回到控制器以显示回来?
这甚至可以在没有页面重新加载(又名标准操作链接)的情况下
基本上需要对 DOM 使用返回的响应(部分视图的呈现标记)。因此,首先在您的页面中创建一个容器div。
<div id="items"></div>
在 ajax 方法的done
事件中,将响应附加到此div。
$('#btnSubmit').click(function () {
var data = $("#frmCreatePerson").serialize();
$.ajax({
url: '@Url.Action("CreatePerson", "Person")',
type: "POST",
data: data
})
.done(function (data) {
$("#items").append(data); // append the response to DOM
})
.fail(function () {
alert("Unable to create.");
});
});
相关文章:
- Angular没有根据模型更新我的选择元素
- 如何使 NgJsTree 应用模型更新
- 控制器内部的scope函数不根据视图中的ng模型更新值
- Angularjs模型更新延迟
- 模型更新时触发ng显示
- 在特定模型更新后,如何让keystoneJS运行函数
- 挖空JS未从视图模型更新
- 使用Spine.Model.Ajax,如何在模型更新时处理响应的JSON中的额外属性
- 模型更新后,AngularJS 视图未更新
- 角度函数在模型更新之前触发:邮政编码检查器
- 使用 AJAX 更新的模型更新 AngularJS 视图
- 角度指令内的回调在模型更新之前调用
- AngularJS 视图在模型更新后不会更新
- 带有硬编码选项的 AngularJS 多选不会在模型更新时更新
- 角度JS模型更新不起作用
- 角度视图未根据模型更新
- AngularJS-在控制器中使用模型导致模型更新
- Angularjs:当ng模型更新时,选择不更新
- 当使用Knockout's的foreach绑定,do事件会在视图模型更新时自动清理
- 通过ng模型更新不同的$scope对象属性