试图在剃刀中使用索引进行循环

时间:2011-12-28 06:57:57

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

我有以下代码:

 @{ 
        var index=0;
        }
        @foreach (AdminSummary adminSummary in @Model.AdminSummaries) {
        index++;
        <div class="rep_tr0">
            <div class="rep_td0">@adminSummary.RowKey</div>
            <div class="rep_td0"><a href="/Administration/Products/Edit?&ac=@Model.Meta.AccountID&pr=@Model.Meta.ProductID&pa=@Model.Meta.PackageID&co=@adminSummary.RowKey">Edit</a></div>            
            <div class="rep_td0"><a href="/Administration/Products/Delete?&ac=@Model.Meta.AccountID&pr=@Model.Meta.ProductID&pa=@Model.Meta.PackageID&co=@adminSummary.RowKey">Delete</a></div>            
            <div class="rep_td0">@Html.TextBox("position_" index, @adminSummary.Position, new { size = 5 })</div>
            <div class="rep_td0">@adminSummary.Title</div>
            <div class="rep_td0">@adminSummary.DetailCount</div>
            <div class="rep_td0">@adminSummary.Modified</div> 
            <div class="rep_td0">@adminSummary.ModifiedBy</div> 

        </div>
    }

我正在尝试找到一种向位置名称添加索引值的好方法。

但是这一直给我一个错误:CS1026:)预期对于position_ on

的行

有没有人知道我可能做错了什么?

更新

我尝试了以下内容:

<div class="rep_td0">@Html.TextBox("position_"@(index), @adminSummary.Position, new { size = 5 })</div>

这给出了错误:CS1646:在逐字说明符之后预期的关键字,标识符或字符串:@

4 个答案:

答案 0 :(得分:3)

尝试

<div class="rep_td0">@Html.TextBox(string.Format("position_{0}", index), @adminSummary.Position, new { size = 5 })</div>

答案 1 :(得分:3)

<div class="rep_td0">@Html.TextBox("position_"+ index.ToString(), @adminSummary.Position, new { size = 5 })</div> 

只需用上面的代替这一行。

答案 2 :(得分:1)

尝试将插入的剃刀包裹在()

<a href="http://mystuff/@(Model.Object.Stuff)/Screen">Example</a>

此外,有时候如果你在一个剃刀块中,编译器要求你包装html,如果它是唯一的东西,如div标签,

<text><div class="rep_tr0"></text>
编辑:对不起,在索引++之后误解了一下这个问题

string textBoxId = "position_" + index;

THEN:

<div class="rep_td0">@Html.TextBox(@textBoxId, @adminSummary.Position, new { size = 5 })</div>

答案 3 :(得分:0)

很好,但是@foreach(),请尝试使用@for(),然后你的循环有自己的索引。