【问题标题】:asp.net mvc razor foreach loop adding id to divasp.net mvc razor foreach 循环将 id 添加到 div
【发布时间】:2014-01-24 01:18:33
【问题描述】:

我正在尝试在foreach 循环中添加动态id 到div,并与变量i 的值连接。它抛出语法错误。可能是什么问题。我们可以在不使用for 循环的情况下实现这个解决方案吗?

@{int i=1;}
@foreach (var or in Model.Names)
{           
       <div oid="@or.Id" mode="0" oids="@or.Id" id="tr"+i>
       @or.Name
       </div>
i++;
}

【问题讨论】:

    标签: c# asp.net-mvc loops razor foreach


    【解决方案1】:

    您想在 C# 代码段中构造 ID。一种选择是使用字符串格式进行整个构造:

    <div oid="@or.Id" mode="0" oids="@or.Id" id="@string.Format("tr{0}",i)">
    

    或id="@("tr"+i)" 或id="tr@(i)"

    请注意,您不能只使用id="tr@i",因为 Razor 语法解析器会忽略“text@text”,因为它看起来像一个普通的电子邮件地址。

    【讨论】:

    • 仅供参考,您需要执行此“tr@(i)”,因为 Razor 语法解析器会忽略“text@text”,因为它看起来像一个普通的电子邮件地址。
    • 这会阻止我的 Materialize 模型在触发元素被点击时显示出来。
    • @naz786 根据评论无法看出您有什么问题 - 请提出新的单独问题,随时链接到此问题以解释您的尝试。确保提供minimal reproducible example。
    • 感谢您回复阿列克谢。原来,我犯了一个愚蠢的拼写错误。我写了model 而不是modal。现在可以了。谢谢!
    • 像魅力一样工作!
    【解决方案2】:

    你不能这样追加:

    id="tr"+i>
    

    一定是:

    id="tr@i">
    

    您需要 @.. 因为它无法在标记和 Razor 之间进行推断。

    【讨论】:

      【解决方案3】:

      在新的 C# 6 中可以直接使用 id="@($"tr{i}")"

      【讨论】:

        【解决方案4】:

        就我自己而言,这些解决方案都不起作用,但首先添加我的@i 确实有效,id="@i+AnyText" 在构建它并检查后得到id="1+AnyText",对于 下一个id="2+AnyText" 等等(我使用的是 2013vs)..

        希望对大家有所帮助,祝你有美好的一天。

        【讨论】:

          【解决方案5】:

          在为此苦苦挣扎了一段时间后,我发现 id="@("tr"+i)" 为我完成了这项工作

          【讨论】:

            猜你喜欢
            • 2014-02-13
            • 2019-11-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-07-15
            • 2012-02-03
            • 1970-01-01
            相关资源
            最近更新 更多