在Razor中连接

时间:2013-01-31 03:33:10

标签: html asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-4

我正在尝试剃刀中的简单连接。 当我在我的模型RAZOR中添加它时,我得到了各种各样的线条:

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

然而,它输出完美的OUTPUT:

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

我正在尝试获取输出中的确切html,但没有所有的squigly。 我理解这很可能在其他帖子中有所涉及,但我仍然试图掌握Razor连接字符串的方式,每次我需要它时似乎都不同。

提前谢谢你,

4 个答案:

答案 0 :(得分:2)

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

最佳做法是“不引人注目的方式”

$(function () {

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


})

答案 1 :(得分:0)

将@code放在html / javascript字符串中,例如“@code”或“@code”几乎总会给你一些曲折的线条。

答案 2 :(得分:0)

在我混合使用HTML标记的行上。 Razor语法,我用@:前言,我发现它解决了很多问题。

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

这个片段是个好建议:

  

必要时,您还可以使用a显式范围代码表达式   @(表达式)语法,以提供更清晰的意图,如   以及从静态标记中消除代码语句的歧义。

答案 3 :(得分:0)

感谢所有帮助过的人,其中一个答案表明,'unobrusive方式'比将javascript硬编码到元素中更好。以下是我提出的建议:

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

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

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

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

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

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

-Edward