【发布时间】:2026-01-05 04:05:02
【问题描述】:
我正在查看 knockout.js 网站上的联系人编辑器示例:
http://knockoutjs.com/examples/contactsEditor.html
该示例运行良好,但我需要对其进行两处更改:
- 从 ASP.NET MVC 3 控制器操作方法传递初始数据。这是来自服务器的代码:
类
public class Phone
{
public string Type { get; set; }
public string Number { get; set; }
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public List<Phone> Phones { get; set; }
}
示例控制器端代码
List<Phone> phoneList = new List<Phone>();
Person p1 = new Person()
{
FirstName = "Abc",
LastName = "Xyz"
};
Phone phone1 = new Phone()
{
Type = "Home",
Number = "1111111111"
};
Phone phone2 = new Phone()
{
Type = "Mobile",
Number = "1111111112"
};
phoneList.Add(phone1);
phoneList.Add(phone2);
p1.Phones = phoneList;
List<Phone> phoneList2 = new List<Phone>();
Person p2 = new Person()
{
FirstName = "Pqr",
LastName = "Stu"
};
Phone phone3 = new Phone()
{
Type = "Home",
Number = "1111111113"
};
Phone phone4 = new Phone()
{
Type = "Mobile",
Number = "1111111114"
};
phoneList2.Add(phone3);
phoneList2.Add(phone4);
p2.Phones = phoneList2;
people.Add(p1);
people.Add(p2);
ViewBag.InitialData = Json(people, JsonRequestBehavior.AllowGet);
- 除了作为 ViewModel 一部分的联系人行之外,我还需要传递一些不属于联系人行但属于 ViewModel 本身的数据(例如 ContactListName 和 ContactListOwner)。这些属性将显示在联系人网格之外。
如果有人能帮我解决这个问题,我将不胜感激。
【问题讨论】:
-
ViewBag.InitialData包含什么你能发布控制器代码吗?你打算在ko.applyBindings(new ContactsModel(initialData));中使用ViewBag.InitialData吗? -
感谢@3nigma 的回复。我在我的问题中添加了控制器端代码。是的,如果可能的话,我打算在 ko.applyBindings(new ContactsModel(initialData)) 中使用 ViewBag.InitialData。
标签: json asp.net-mvc-3 knockout.js viewmodel