1

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

我想知道是否可以通过$.ajax().

我目前有$.ajax()工作,但是它返回整个页面的 HTML,而不是部分视图或模型本身。

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

4

3 回答 3

1

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

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

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

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

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

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

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

  1. 向控制器操作发出 AJAX 请求,该操作返回 aJsonResult并在您的 Javascript 中动态创建表单字段(可能 - 如前所述 - 使用类似 Knockout 的东西)。
  2. 创建一个返回 a 的控制器操作,PartialViewResult并在适当的位置动态插入返回的标记。

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

于 2013-06-05T21:46:59.677 回答
1

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

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

于 2013-06-05T21:45:49.423 回答
0

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

于 2013-06-05T21:45:47.517 回答