淘汰失误

时间:2015-05-07 07:39:00

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

我按照本教程: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)

1 个答案:

答案 0 :(得分:0)

那是因为你错过了Perpetuumsoft的following Nuget package。该软件包提供了该教程中使用的MVC淘汰助手。

如果您不想使用该软件包,请删除using语句和var ko行。只需确保applyBindings在视图模型的某个位置。