Übergeben müssen ersten viewmodel-Daten aus ASP.NET MVC knockout.js

Schaute ich den Kontakte-editor auf die Probe knockout.js website:

http://knockoutjs.com/examples/contactsEditor.html

Das Beispiel funktioniert perfekt, aber ich brauchte, um zwei änderungen:

  • Übergeben die ursprünglichen Daten ASP.NET MVC-3 controller-action-Methode. Hier ist der code vom server:

Klassen

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; }
}

Sample-Controller Seite code

       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);
  • Abgesehen von Reihen von Kontakten, die Teil des ViewModel, ich brauche auch einige Daten (z.B. ContactListName und ContactListOwner), dass gehört nicht zu den Reihen der Kontakte, sondern auf das ViewModel selbst. Diese Eigenschaften gezeigt werden, die außerhalb der raster der Kontakte.

Würde mich wirklich freuen, wenn mir jemand helfen kann mit dieser.

  • was bedeutet die ViewBag.InitialData enthält, können Sie die controller-code? möchten Sie verwenden, die ViewBag.InitialData im ko.applyBindings(new ContactsModel(initialData));?
  • Danke @3nigma für Ihre Antwort. Ich habe die controller-code in meiner Frage. Und ja, ich beabsichtige zu verwenden, ViewBag.InitialData in ko.applyBindings(new ContactsModel(initialData)), wenn möglich.
InformationsquelleAutor Yasir | 2012-03-11
Schreibe einen Kommentar