【发布时间】:2012-05-01 14:04:00
【问题描述】:
我最近才研究 Ajax(专家们笑我),我对所有添加的功能感到兴奋。但也有一些顾虑。
-
表单提交
在 Ajax 示例中,一个 json 对象要么自动创建(序列化表单),要么通过从每个 DOM 项中检索 val() 手动构建。并且使用javascript执行数据验证。我认为我们可能仍然可以使用 Html.EditorFor(和 Html.TextboxFor 等)来构建表单。但是是否仍然可以使用模型/视图模型上添加的 DataAnnotation 属性?我见过的 MVC+Ajax 示例通常不执行任何类型的服务器端验证。可以省略那部分吗?我想这很好,因为用户现在必须启用 javascript 才能提交表单。但我们需要一些专业的建议。
-
查看模型
在 Ajax 世界中,视图模型通常表示为 JSON 对象。 (如果我错了,请纠正我。)那么,在我们的域模型和视图模型之间映射的最佳方式是什么?有没有像 AutoMapper 这样的工具?
好的,我需要在这里添加一些东西............
引起这种担忧的原因是我发现一些示例使用名为
// 这是一个简单的 *viewmodel* - 定义 UI 数据和行为的 JavaScript 函数 AppViewModel() { this.firstName = "伯特"; this.lastName = "伯廷顿"; } // 激活 knockout.js ko.applyBindings(new AppViewModel());Knockout.js(See its website) 而不是return Json(model)将我们的视图模型的 json 对象返回到$.Ajax调用中,它的示例显示了一个视图模型是用 javascript 构建的。这种做法有什么好处?
----我的更新结束----
感谢您提供任何有用的建议。
【问题讨论】:
-
忽略服务器端验证是绝对不行的。
-
blaise,正如我在思考网站回复中提到的那样,Automapper 会以两种方式完成您需要的一切(如果确实需要,即通常,您会在发送到视图之前将域模型映射到视图模型. 99% 的情况下,通过 httppost 返回的模型将是您的域模型)
标签: jquery ajax asp.net-mvc-3