次のコードがあります。
インデックス.cshtml:
@using System.Web.Script.Serialization
@model MvcApplication3.Models.Person
<script src="../../Scripts/knockout-2.1.0.js" type="text/javascript"></script>
<!-- This is a *view* - HTML markup that defines the appearance of your UI -->
<p>First name: <input data-bind="value: firstName" /></p>
@*<p>Last name: <input data-bind="value: lastName" /></p>*@
<script type="text/javascript">
var initialData = @Html.Raw(
new JavaScriptSerializer().Serialize(Model.FirstName));
alert(initialData);
// The *viewmodel* - JavaScript that defines data and behavior of the UI
function AppViewModel() {
this.firstName = ko.observable(initialData);
// this.lastName = ko.observable("Bertington");
}
// Activates knockout.js
ko.applyBindings(new AppViewModel());
</script>
ホームコントローラー:
public class HomeController : Controller
{
public ActionResult Index()
{
var people = new PeopleEntities();
var person = people.People.First();
return View(person);
}
}
基本的にこれが行うことは、データベースから人をロードし、ノックアウトを使用して名の編集可能なフィールドを作成し、それにロードするFirstName
ことです。
これは問題なく動作しますが、LastName
. 名だけをシリアライズしているため、これを行う方法がわかりません。モデル全体をシリアライズしたいと考えていますが、各名前にアクセスする方法がわかりません。