我按照本教程:http://knockoutmvc.com/GiftList创建可编辑列表。 但是当我运行代码。它发现了一个错误
无法找到类型或命名空间名称'PerpetuumSoft'(是吗? 缺少using指令或程序集引用?)
此行的错误:
@model MvcMovie.Models.GiftListModel
@using PerpetuumSoft.Knockout //Error in this line
@{
ViewBag.Title = "Index";
}
@{
var ko = Html.CreateKnockoutContext(); //and also Error in this line
}
我在包中包含了淘汰赛
bundles.Add(new ScriptBundle("~/bundles/knockout").Include(
"~/Scripts/knockout-2.1.0.js",
"~/Scripts/knockout-2.1.0.debug.js"));
并在共享布局名称_Layout.cstml
中添加此代码 @Scripts.Render("~/bundles/knockout")
实际上,我搜索本教程是因为我想创建一个用户可以编辑列表的视图,只有用户点击按钮保存才能保存数据,这意味着用户可以随心所欲。仅在触发按钮保存时才更新数据库。如果您在不使用任何扩展或插件的情况下了解其他任何方法,请推荐它(因为我必须使用ASP .NET MVC 4,不再添加任何扩展名。)非常感谢。
这是视图中的代码
@model MvcMovie.Models.GiftListModel
@using PerpetuumSoft.Knockout
@{
ViewBag.Title = "Index";
}
@{
var ko = Html.CreateKnockoutContext();
}
<p>You have asked for @ko.Html.Span(m => m.Gifts.Count) gift(s)</p>
<form id="myform">
<table>
<tbody>
@using (var items = ko.Foreach(m => m.Gifts))
{
<tr>
<td>Gift name:@items.Html.TextBox(item => item.Title, new { @class = "required" }).UniqueName()</td>
<td>Price: $@items.Html.TextBox(item => item.Price, new { @class = "required number" }).UniqueName()</td>
<td>@ko.Html.Button("Delete", "RemoveGift", "GiftList", new { index = items.GetIndex() })</td>
</tr>
}
</tbody>
</table>
@ko.Html.Button("Add", "AddGift", "GiftList")
<button @ko.Bind.Enable(m => m.Gifts.Count > 0) type="submit">Save</button>
</form>
@using (ko.If(m => m.ServerTime.Length > 0))
{
<p>Saved at @ko.Html.Span(m => m.ServerTime)</p>
}
<script type="text/javascript">
$("#myform").ajaxForm();
$("#myform").validate({ submitHandler: function () { @ko.ServerAction("Save", "GiftList"); } });
</script>
<style scoped="scoped">
input.error {
border: 1px solid red;
background-color: #FDC;
}
label.error {
display: block;
color: Red;
font-size: 0.8em;
}
</style>
@ko.Apply(Model)
答案 0 :(得分:0)
那是因为你错过了Perpetuumsoft的following Nuget package。该软件包提供了该教程中使用的MVC淘汰助手。
如果您不想使用该软件包,请删除using语句和var ko
行。只需确保applyBindings
在视图模型的某个位置。