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

时间:2013-06-05 21:40:42

标签: c# ajax asp.net-mvc asynchronous

我一直在努力过滤日志条目列表,而且我已接近完成。

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

我目前正在使用$.ajax(),但它会返回整个页面的HTML而不是局部视图或模型本身。

有人知道在当前视图中简单更新模型的方法吗?

3 个答案:

答案 0 :(得分:1)

  

您必须以json格式返回模型并使用js模板   在dom中替换服务器渲染的html的功能。 -   WestDiscGolf

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

答案 1 :(得分:1)

这个概念并没有多大意义。一旦呈现页面,该模型就不再存在,直到它在以下POST上重新实例化(假设 重新实例化,即您的控制器操作接受相同类型的参数)。与此同时,它只是表现为具有name属性的表单字段,对应于 模型的属性。

但是,您可以动态创建表单字段,以便在发布表单时(如果可能)再次映射回模型属性。

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

<input type="hidden" id="hdnMyProperty" name="MyProperty" />

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

var property = /* Your returned value here */;
$('#hdnMyProperty').val(property);

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

  1. 向控制器操作发出一个AJAX请求,该操作返回JsonResult并在您的Javascript中动态创建表单字段(可能 - 正如已经提到的那样 - 利用Knockout之类的东西)。
  2. 创建一个返回PartialViewResult的控制器操作,并在适当的位置动态插入返回的标记。
  3. 当您发出下一个发布请求时,模型绑定器将尝试将其映射到新实例化模型中的相应属性。

答案 2 :(得分:0)

您只需使用Knockout即可。在这种情况下,无需重新发明轮子。