Knockout和InitializeViewBag方法(MVC)

时间:2013-12-01 09:48:31

标签: c# asp.net-mvc asp.net-mvc-4 razor knockout.js

Visual Studio从下面的示例中不了解方法InitializeViewBag(“简单列表”)。 它是如何制作的?这种方法存在吗?

为什么在此示例中使用它:Example

模型

public class SimpleListModel
{
    public string ItemToAdd { get; set; }
    public List<string> Items { get; set; }

    public void AddItem()
    {
        Items.Add(ItemToAdd);
        ItemToAdd = "";
    }
}

剃刀

@using PerpetuumSoft.Knockout
@model KnockoutMvcDemo.Models.SimpleListModel
@{
    var ko = Html.CreateKnockoutContext();
}
@using (ko.Html.Form("AddItem", "SimpleList", null, new { id = "myform" }))
{
    <span>New item:</span>
    @ko.Html.TextBox(m => m.ItemToAdd).ValueUpdate(KnockoutValueUpdateKind.AfterKeyDow n) 
    <button type="submit" @ko.Bind.Enable(m => m.ItemToAdd.Length >
}

控制器

public class SimpleListController : BaseController
{
    public ActionResult Index()
    {
        InitializeViewBag("Simple list");
        var model = new SimpleListModel { Items = new List<string> { "Alpha", "Beta", "Gamma" } };
        return View(model);
    }

    public ActionResult AddItem(SimpleListModel model)
    {
        model.AddItem();
        return Json(model);
    }
}

1 个答案:

答案 0 :(得分:1)

在github中查看BaseController的source code,我可以看到在那里定义了InitializeViewBag方法。这就是SimpleListController可以访问它的方式。如果你有相同的BaseController实现并且该方法仍然无法识别,我会认为这很烦人,就像这里或那里的额外括号,或者其他地方的重复BaseController。