asp.net – KnockoutJS,在ajax调用后更新ViewModel
|
我正在使用Knockout和Knockout Mapping插件. >我的MVC3 Action返回一个View而不是JSON直接将我的Model转换成JSON. 我的问题是在调用AJAX POST之后,并且接收到我的JSON响应剔除没有更新我的所有绑定…好像可观察/映射已经掉下来 如果我添加了一个额外的ko.applyBindings(viewModel);在成功的事情做的工作…但是问题然后出现与多个绑定,并确定这不是正确的解决方案. 这是HTML / Template / Bindings <!-- Start Form -->
<form action="@Url.Action("Edit")" data-bind="submit: save">
<div id="editListing" data-bind="template: 'editListingTemplate'"></div>
<div id="saveListing" class="end-actions">
<button type="submit">Save Listings</button>
</div>
</form>
<!-- End Form -->
<!-- Templates -->
<script type="text/html" id="editListingTemplate">
<div class="warning message error" data-bind="visible: Response.HasWarning">
<span>Correct the Following to Save</span>
<ul>
{{each(i,warning) Response.BusinessWarnings}}
<li data-bind="text: Message"></li>
{{/each}}
</ul>
</div>
<fieldset>
<legend>Key Information</legend>
<div class="editor-label">
<label>Project Name</label>
</div>
<div class="editor-field">
<input data-bind="value: Project_Name" class="title" />
</div>
</fieldset>
</script>
<!-- End templates -->
这是Knockout / Script <script type="text/javascript">
@{ var jsonData = new HtmlString(new JavaScriptSerializer().Serialize(Model)); }
var initialData = @jsonData;
var viewModel = ko.mapping.fromJS(initialData);
viewModel.save = function ()
{
this.Response = null;
var data = ko.toJSON(this);
$.ajax({
url: '@Url.Action("Edit")',contentType: 'application/json',type: "POST",data: data,dataType: 'json',success: function (result) {
ko.mapping.updateFromJS(viewModel,result);
}
});
}
$(function() {
ko.applyBindings(viewModel);
});
</script>
这是从成功请求(包括验证消息)返回的JSON响应. {
"Id": 440,"Project_Name": "","Response": {
"HasWarning": true,"BusinessWarnings": [
{
"ExceptionType": 2,"Message": "Project is invalid."
},{
"ExceptionType": 1,"Message": "Project_Name may not be null"
}
]
}
}
UPDATE Fiddler Demo是一个修剪现实的例子,我正在经历.我使用返回的JSON更新了Project_Name,但是没有通过它们的数据绑定来更新viewModel.Response对象和属性.具体Response.HasWarning(). 我已经改回到ko.mapping.updateFromJS,因为在我的控制器中,我专门返回Json(viewModel). 清理我的初始代码/问题以匹配演示. 解决方法我猜回应是保留的,当我将“回应”改为“resp”时,一切顺利.见 http://jsfiddle.net/BBzVm/(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – VS 2012发布:找不到有效的AspnetMergePath
- asp.net – 无法获取项目引用的依赖项
- asp.net实现access数据库分页的方法
- iis – 如何调试w3wp.exe随机崩溃的原因?
- asp.net-mvc – 确保视图存在
- asp.net-mvc – 允许一个人一次使用帐户的可重用方式
- 从ASP.NET切换到面包和黄油HTML / jQuery的优势
- asp.net – Page_ClientValidate正在多次验证
- asp.net-mvc – ASP.NET MVC Javascript ActionResult
- ASP.NET Web Api:如何使用URL参数传递访问令牌(oAuth 2.0)
