【问题标题】:Knockout.js and MVCKnockout.js 和 MVC
【发布时间】:2011-05-07 03:47:26
【问题描述】:

刚开始玩 knockout.Js,这是一个很棒的框架,Steve 用它做得很好。我现在似乎无法做的一件事是用我的 Html Helpers 来暗示它。所以例如我有:

 <%: Html.TextBoxFor(model => model.Division) %>

但我想在上面使用数据绑定,但此刻我无法将“数据绑定”属性放入助手中。我之前使用过属性,例如@class、Id 等,但由于任何想法,这个很棘手。我试过了:

<%: Html.TextBoxFor(model => model.SupplierName, new { data-bind = "SupplierName"}) %>

 <%: Html.TextBoxFor(model => model.SupplierName, new { "data-bind"" = "SupplierName"}) %>

但没有快乐。我们大量使用编辑器和文本框助手,我真的很想将它们集成到带有敲除的项目中..

非常感谢任何帮助

【问题讨论】:

  • 这被证明有点啰嗦,所以我在想 HtmlHelpers,有没有可用的,或者这是我第一次尝试自己的操作系统项目?

标签: c# asp.net-mvc-2 html-helper knockout.js


【解决方案1】:

这应该可行:

<%: Html.TextBoxFor(model => model.SupplierName, new { data_bind = "SupplierName"}) %>

变量名称不能包含连字符 (-),但如果您在 HTML 属性中使用下划线 (_),它会在“呈现”时自动转换为连字符。

【讨论】:

  • 表达式应该是 new { data_bind = "value: SupplierName" }
  • 是 MVC 4,还是我也误认为 MVC 3?
【解决方案2】:

您可以将属性提供为匿名对象或字典。在这种特殊情况下,应该使用字典:

<%: Html.TextBoxFor(m => m.SupplierName, new Dictionary<string, object> { { "data-bind", "SupplierName" } }) %>

【讨论】:

  • 干杯罗伯特,我刚刚开始了。一个问题是“供应商名称”需要是“值:供应商名称”。谢谢 ;)
  • 好吧。属性值可以是任何东西……甚至是value:SupplierName。 ;) 干杯。
  • agrred 这是值:我错过的 PropertyName 只是让 PropertName 似乎不起作用?还需要添加 valueUpdate 属性,否则由于某种原因它似乎没有更新我的基础值。?
  • @Anyroo:我不是您使用的库,但由于它可以自动处理大部分表单,我想这些是您必须遵守的特殊性。检查他们的文档以了解您必须应用的设置。
  • 您也可以用下划线代替破折号,HtmlHelper 至少在 MVC 3 中正确呈现 @Html.TextBoxFor(m =&gt; m.Name, new { data_bind = "value: name" }),不确定 2
【解决方案3】:

我使用 Jim 的回答作为我的 MVC 4 解决方案的基础。

吉姆的:

<%: Html.TextBoxFor(model => model.SupplierName, new { data_bind = "SupplierName"}) %>

我的:

@Html.TextBoxFor(model => model.SupplierName, new { data_bind = "value: SupplierName" })

【讨论】:

    【解决方案4】:

    请参阅Using Html.TextBoxFor with class and custom property (MVC) 了解如何在 MVC3 中执行此操作。我正在使用 MVC2,所以上面的答案对我来说是正确的

    【讨论】:

    • 感谢它是一个很好的语法。
    猜你喜欢
    • 2014-03-15
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 2017-09-13
    相关资源
    最近更新 更多