我一直在努力过滤日志条目的列表,并且我正在接近完成。MVC - 通过AJAX +控制器异步刷新视图模型?
我想知道是否有可能通过$.ajax()
异步更新当前视图的模型。
我目前有$.ajax()
工作,但它返回整个页面的HTML而不是局部视图或模型本身。
有没有人知道在当前视图中更新模型的方法?
我一直在努力过滤日志条目的列表,并且我正在接近完成。MVC - 通过AJAX +控制器异步刷新视图模型?
我想知道是否有可能通过$.ajax()
异步更新当前视图的模型。
我目前有$.ajax()
工作,但它返回整个页面的HTML而不是局部视图或模型本身。
有没有人知道在当前视图中更新模型的方法?
您必须以json格式返回模型并使用js模板 功能来替换服务器在dom中呈现的html。 - WestDiscGolf
上面是解决方案,所以我会保持它的简单,使用更传统的方法。
您可以简单地使用Knockout。在这种情况下,不需要重新发明轮子。
这个概念没有意义。一旦页面被渲染,模型就不再存在,直到它在下面的POST中被重新实例化(假设它是被重新实例化,即您的控制器操作接受相同类型的参数)。同时,它只表现为表格字段,其name
属性对应于是模型的属性。
但是,您可以动态创建表单字段,当表单发布后,它们将(如果可能)再次映射回模型属性。
<input type="hidden" id="hdnMyProperty" name="MyProperty" />
然后使用jQuery来填充字段的值:
var property = /* Your returned value here */;
$('#hdnMyProperty').val(property);
有一对夫妇的常用方法
创建一个域,其name
属性模型属性的名称相匹配实现此目的:
JsonResult
并动态地在您的Javascript中创建表单域(可能 - 如前所述 - 利用Knockout之类的东西)。PartialViewResult
并将返回的标记动态插入适当的位置。当您发出下一个发布请求时,模型联编程序会尝试将其映射到新实例化模型中的相应属性。
如果你返回一个模型,你的JS将不知道如何把它放到HTML中。 – SLaks
您必须以json格式返回模型,并使用js模板功能来替换服务器在dom中呈现的html。 – WestDiscGolf
显示一些代码!你可以让一些逻辑将最后的结果作为JSON返回,并使用ajax将这个结果附加到页面上!但@SLaks说,你需要一些JavaScript逻辑来做到这一点! – Fals