asp.net-mvc - backbone.js 从 asp.net mvc View 模型填充大型嵌套模型

标签 asp.net-mvc json collections backbone.js models

好吧,我知道这个机会不大。

我在后端使用 asp.net mvc。我将有一个操作返回一个 json View 模型,该 View 模型将具有几个简单的属性以及对象和对象集合。例如

public class ViewModel
{
    public string Name {get;set;}
    public Person Person {get;set;}
    public IEnumerable<SleectListItem> UserTypes {get;set;}
}
public class Person
{
    public string FirstName {get;set;}
    public string LastName {get;set;}
    public int UserType {get;set;}
}

SelectListType 只是一个名称值对,其中包含“Text”、“Value”和“Selected”属性

这个想法是,有一个表单,您可以通过填写名字、姓氏并从下拉列表中选择用户类型来创建一个人。

我想做的是拥有一组backbone.js模型,例如

app.MyViewModel=Backbone.Model.extend();
app.Person=Backbone.Model.extend();
app.SelectListItem=Backbone.Model.Extend();
app.UserTypes=Backbone.Collection.Extend({
  model:app.SelectListType
})

并且能够通过传入从服务器返回的 Json 来填充 MyViewModel,如下所示

{Name:'SomeName',
 Person:{
     FirstName:'Frank',
     lastName:'Jones'
 },
 UserTypes:[{Text:'Admin',
       Value:1,
       selected:false},
      {text:'peon',
      Value:2,
      selected:false}

这不是我所知道的传统方式。我想我应该对每个对象或其他东西进行一次调用,但我真的只想对服务器进行一次调用来获取我需要的所有数据,因为这些数据已经在服务器上正确收集和排列。

一旦数据到达,我可以编写各种循环来填充所有不同的集合等,但是是否没有更有效的方式来执行此操作?

最佳答案

查看backbone-relational :

如果您设置了关系,则可以执行与该页面上的示例类似的操作:

paul = new Person({
id: 'person-1',
name: 'Paul',
user: { id: 'user-1', login: 'dude', email: '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1b767e5b7c767a727735787476" rel="noreferrer noopener nofollow">[email protected]</a>' }
});

// A User object is automatically created from the JSON; so 'login' returns 'dude'.
paul.get('user').get('login');

否则,您可能可以通过在 MyViewModel 中重写 parse() 和 toJSON() 来完成您想要的任务。

关于asp.net-mvc - backbone.js 从 asp.net mvc View 模型填充大型嵌套模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9448304/

相关文章:

asp.net-mvc - MVC 框架比较(主要是成本/速度权衡)

asp.net-mvc - ACS 已安装,但 MVC 4.0 应用程序仍然重定向并且无法找到 login.aspx

javascript - console.log 如何确定打印对象时要打印哪些属性?

javascript - 如何在多列中本地添加数据?

java - java中如何读取超过100000行的excel文件?

java - 我可以结合按功能分组对流进行分区吗?

html - asp.net mvc 将 css 添加到 editorfor?

asp.net-mvc - 基本MVC : What does "modelItem =>" do?

javascript - 本地存储: Get specific localstorage value of which contains many items

c# - 实现不同类型数组集合的更好方法