1

我正在尝试在剃刀中进行简单的串联。当我在我的模型 RAZOR 中添加它时,我得到了各种 squiqly 线条:

<input type="checkbox" id="ck1-@track.TrackID" 
 onclick="$('#ck2-@(track.TrackID)').prop('checked', $(this).prop('checked'))" />

但是它输出完美的输出:

<input type="checkbox"
       id="ck1-500004524"
       onclick="$('#ck2-500004524').prop('checked', $(this).prop('checked'))">

我正在尝试获得与输出中完全相同的 html,但没有所有的波浪线。我知道这很可能在其他帖子中有所涉及,但我仍在尝试掌握 Razor 连接字符串的方式,每次我需要它时似乎都不同。

先感谢您,

4

4 回答 4

2

如前所述,Razor 对将变量注入 html 属性并不友好。部分原因是在标记中链接事件处理程序是一种过时的做法。

最佳实践是“不显眼的方式”

$(function () {

   $('#').click(function () 
 { $('#ck2-@(track.TrackID)').prop('checked', $(this).prop('checked')) })


})
于 2013-01-31T22:18:00.253 回答
0

在 html/javascript 字符串中包含@code,例如“@code”或“@code”,几乎总是会给你波浪线。

于 2013-01-31T04:20:12.477 回答
0

在我混合 HTML 标记和 Razor 语法的行中,我在该行前面加上@:我发现解决了很多问题的行。

另外,请查看http://weblogs.asp.net/scottgu/archive/2010/12/16/asp-net-mvc-3-implicit-and-explicit-code-nuggets-with-razor.aspx

这个片段是个好建议:

必要时,您还可以使用 @(expression) 语法显式地限定代码表达式的范围,以使您的意图更加清晰,并消除代码语句与静态标记的歧义。

于 2013-01-31T16:23:33.137 回答
0

感谢所有提供帮助的人,其中一个答案表明“不显眼的方式”会比将 javascript 硬编码到元素中更好。这是我想出的:

<input type="checkbox" class="ckSelectCol" />

$(function () {
    $('.ckSelectCol').each(function () {
        $(this).change(function () {
            dupCheckBox(this);
        });
    });
});

这样做是找到所有具有类 ckSelectCol 的复选框并添加一个更改事件处理程序,更改事件处理程序是我希望在更改时调用的函数。

这可以通过多种方式完成,我选择这种方式是因为它将 javascript 与页面分离,可以轻松重用并使页面更轻。

如果有人有任何建议,请回复。

再次感谢我在这篇文章中收到的所有意见。

-爱德华

于 2013-02-01T23:23:41.217 回答