首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC -通过AJAX + Controller异步刷新视图模型?

MVC -通过AJAX + Controller异步刷新视图模型?
EN

Stack Overflow用户
提问于 2013-06-06 05:40:42
回答 3查看 5.1K关注 0票数 1

我一直在过滤一个日志条目列表,现在已经接近完成了。

我想知道是否有可能通过$.ajax()异步更新当前视图的模型。

我目前让$.ajax()正常工作,但是它返回整个页面的超文本标记语言,而不是局部视图或模型本身。

有没有人知道一种简单地在当前视图上更新模型的方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-06 05:45:49

你必须以json格式返回模型,并使用js模板功能来替换dom中服务器呈现的html。- WestDiscGolf

以上就是解决方案,所以我将保持它的简单性,并使用更传统的方法。

票数 1
EN

Stack Overflow用户

发布于 2013-06-06 05:47:00

这个概念并没有真正的意义。一旦页面被渲染,这个模型就不再存在了,直到它在接下来的POST中被重新实例化(假设它被重新实例化,即你的控制器操作接受了相同类型的参数)。同时,它只是表现为具有name属性的表单字段,这些属性与模型的属性相对应。

但是,您可以动态创建表单域,当表单发布时,这些表单域(如果可能)将再次映射回模型属性。

创建一个字段,使其name属性与模型属性的名称相匹配:

代码语言:javascript
复制
<input type="hidden" id="hdnMyProperty" name="MyProperty" />

然后使用jQuery填充字段的值:

代码语言:javascript
复制
var property = /* Your returned value here */;
$('#hdnMyProperty').val(property);

有几种常见的方法可以实现这一点:

  1. 向返回JsonResult的控制器操作发出AJAX请求,并在您的Javascript中动态创建表单域(可能-正如前面提到的-利用像Knockout).
  2. Create这样的返回PartialViewResult的控制器操作,并将返回的标记动态插入到适当的位置。

当您发出下一个post请求时,模型绑定器将尝试将其映射到新实例化的模型中的适当属性。

票数 1
EN

Stack Overflow用户

发布于 2013-06-06 05:45:48

您可以简单地使用Knockout。在这种情况下,不需要重新发明轮子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16950378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档