Jquery 关于ASP.NET MVC3中使用Ajax的问题
我最近才开始研究Ajax(专家们,笑我吧),我对所有添加的功能感到兴奋。但也有一些担忧Jquery 关于ASP.NET MVC3中使用Ajax的问题,jquery,ajax,asp.net-mvc-3,Jquery,Ajax,Asp.net Mvc 3,我最近才开始研究Ajax(专家们,笑我吧),我对所有添加的功能感到兴奋。但也有一些担忧 提交表格 在Ajax示例中,json对象可以自动创建(序列化表单),也可以通过从每个DOM项检索val()手动构建。并使用javascript执行数据验证。我认为我们可能仍然可以使用Html.EditorFor(和Html.TextboxFor等)来构建表单。但是仍然可以使用添加到模型/视图模型上的DataAnnotation属性吗?我看到的MVC+Ajax示例通常不执行任何类型的服务器端验证。省略那部分可以
Knockout.js
的东西,而不是return Json(model)
来将视图模型的Json对象返回到$。Ajax
调用,其示例显示视图模型是在javascript中构建的
// This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI
function AppViewModel() {
this.firstName = "Bert";
this.lastName = "Bertington";
}
// Activates knockout.js
ko.applyBindings(new AppViewModel());
//这是一个简单的*viewmodel*-JavaScript,用于定义用户界面的数据和行为
函数AppViewModel(){
this.firstName=“Bert”;
this.lastName=“Bertington”;
}
//激活knockout.js
应用绑定(新的AppViewModel());
这种做法有什么好处
----我的更新结束了----MVC有模型绑定器,可以将您的post数据转换为您需要的任何类型(假设您正确遵守其约定)。您不太可能需要将viewmodels映射到域模型。忽略服务器端验证是绝对不好的。blaise,正如我在thinking sites reply中提到的,Automapper将以两种方式(如果确实需要的话,即通常情况下,在发送到视图之前,您会将域模型映射到viewmodel。99%的情况下,通过httppost返回的模型将是您的域模型)忽略服务器端验证是绝对不可能的。blaise,正如我在thinking sites回复中提到的,Automapper将以两种方式满足您的所有需求(如果确实需要,即通常情况下,您会在发送到视图之前将域模型映射到viewmodel。99%的情况下,通过httppost返回的模型将是您的域模型)。感谢您的回复。我的理解是视图模型是一个数据传输对象。提交表单时,收集的值首先填充到视图模型中(对于该视图)。但是域模型可能有其他属性,或者有时需要一些数据转换(例如将string[]数组转换为字符串以存储在数据库中)。在这种情况下,我们将不得不在viewmodels和domain models.blaise之间映射这些属性。如果您需要复杂(或简单)的映射,请查看AutoMapper。做你需要的一切,然后再做一些!!如果您愿意,您可以使用视图模型从表单中返回,没有任何错误或不正确的地方,是的,如果您愿意,您可以使用automapper。我记不起我曾经发过一个mod