【问题标题】:Razor template editor doesn't like my Knockout attr binding syntaxRazor 模板编辑器不喜欢我的 Knockout attr 绑定语法
【发布时间】:2013-04-23 21:21:22
【问题描述】:

我有一个运行良好的 Knockout attr 绑定:

<a data-bind="attr: { href: 'Action?destination=' + '@Model.Property' + '&entityId=' + Id }">Select</a>

但是,一旦将任何模型属性插入到 href 字符串中,Visual Studio 中的语法突出显示就会引发“未终止的字符串常量”错误。

我已经尝试过“@()”和“@:”,但似乎没有什么能让编辑满意。

【问题讨论】:

  • 代码是否正确呈现并在浏览器中运行?如果是,那么您不应该关心 VS 错误消息... Razor intelisense 仍然不是 100% 正确。顺便问一下,您使用的是哪个版本的 VS? 2010 年? 2012 年? Vanilia 还是使用 Resharper/CodeRush/etc?
  • @nemesv:我使用的是 2012 Update 2 vanilla。该代码可以正确呈现,并且可以在多个浏览器中正常工作。我只是认为 VS 错误会引起我们其他一些程序员或标记开发人员的担忧......
  • 您是否尝试过预先将整个href 分配给一个局部变量,然后使用它来输入值,这样您就没有任何单引号了?
  • 您为什么要使用淘汰赛来获得仅通过常规 html 链接即可实现的目标? (Hmtl.ActionLink 助手)

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


【解决方案1】:

我有一个类似的问题,我想将控制器操作 URL(由 Razor 视图的 UrlHelper 实例提供)传递给我的视图模型函数,以便稍后在 jQuery AJAX 调用中使用。

以下标记在浏览器中有效,但在 Visual Studio 中提供语法高亮显示:

<button data-bind="click: function (data) { someFunction(data, '@Url.Action("SomeAction", "SomeController")') }">Action!</button>

可以通过将上面的内容更改为以下内容来抑制语法突出显示:

<button data-bind="@("click: function (data) { someFunction(data, '" + Url.Action("SomeAction", "SomeController") + "') }")">Action!</button>

【讨论】:

    【解决方案2】:

    为什么不直接使用常规的 Html.ActionLink?

    @Html.ActionLink("Action", "Select", new { destination = Model.Property, entityId = Model.Id });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多