Visual studio不理解以下示例中的方法InitializeViewBag("Simple list"(。它是如何制作的?这种方法存在吗?
为什么在这个例子中,它被使用:示例
型
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);
}
}
查看 github 中 BaseController 的源代码,我可以看到 InitializeViewBag 方法就是在那里定义的。这就是SimpleListController访问它的方式。如果你有相同的BaseController实现,但该方法仍然没有被识别,我会认为这很烦人,比如这里或那里有一个额外的括号,或者在其他地方有一个重复的BaseController。