2011-09-23 28 views
30

Vâng, đây chỉ là điều đáng xấu hổ. Tôi thậm chí không thể tìm ra một sự gia tăng đơn giản trong một trong những quan điểm của tôi trong ASP.NET MVC3 (Razor). Tôi đã thực hiện tìm kiếm và có vẻ như tài liệu cho Razor khá thưa thớt. Dưới đây là những gì tôi đã cố gắng và thất bại thảm hại:Tăng đơn giản của biến cục bộ trong chế độ xem trong ASP.NET MVC3 (Dao cạo)

@{ 
    var counter = 1; 

    foreach (var item in Model.Stuff) { 
     ... some code ... 
     @{counter = counter + 1;} 
    } 
} 

Tôi cũng đã cố gắng @{counter++;} chỉ cần cho đá và không có kết quả =) Tôi sẽ đánh giá cao nếu ai đó có thể soi sáng cho tôi. Cảm ơn!

Trả lời

58
@{ 
    int counter = 1; 

    foreach (var item in Model.Stuff) { 
     ... some code ... 
     counter = counter + 1; 
    } 
} 

Giải thích:

@{ 
// csharp code block 
// everything in here is code, don't have to use @ 
int counter = 1; 
} 

@foreach(var item in collection){ 
    <div> - **EDIT** - html tag is necessary for razor to stop parsing c# 
    razor automaticaly recognize this as html <br/> 
    this is rendered for each element in collection <br/> 
    value of property: @item.Property <br/> 
    value of counter: @counter++ 
    </div> 
} 
this is outside foreach 
+0

Cảm ơn. Tôi đã thử cả hai. Người đầu tiên ít nhất tải trang nhưng vòng lặp foreach không vượt qua vòng đầu tiên cho tôi biết đã xảy ra sự cố với bộ đếm. Đề xuất thứ hai dẫn đến lỗi biên dịch. –

+1

Bạn đã thử khai báo truy cập là int? EDIT Trên thực tế, nó là int khi được chỉ định ... –

+0

Có, sử dụng 'int counter' làm việc cho tôi. Cảm ơn đã giúp đỡ! =) –

16

tôi không tìm thấy câu trả lời ở đây là rất hữu ích trong C# - vì vậy đây là một ví dụ làm việc cho bất cứ ai đến với trang này tìm kiếm các C# Ví dụ:

@{ 
int counter = 0; 
} 


@foreach(Object obj in OtherObject) 
{ 
    // do stuff 
    <p>hello world</p> 
    counter++; 
} 

Đơn giản, vì chúng tôi đã ở trong @foreach, chúng tôi không cần đặt số gia tăng vào bất kỳ giá trị @ {} nào.

2

Một cách tiếp cận sạch sẽ là:

<div> 
@{int counter = 1; 
foreach (var item in Model) 
{ 
    <label>@counter</label> 
    &nbsp; 
    @Html.ActionLink(item.title, "View", new { id = item.id }) 
    counter++; 
} 
} 
</div> 
7

Nếu tất cả các bạn cần làm là hiển thị số, một giải pháp thậm chí sạch hơn là tăng-and-trở lại trong một đi:

@{ 
    var counter = 0; 
} 
<section> 
    @foreach(var hat in Ring){ 
     <p> Hat no. @(++counter) </p> 
    }   
</section> 
+0

giải pháp duy nhất hoạt động với tôi – kobe

+1

Ditto. Tôi nghĩ rằng chìa khóa là dấu ngoặc đơn xung quanh ++ truy cập. –

1

Xem mã sau đây để tăng một biến cục bộ trong các khung nhìn trong ASP.NET công việc của nó tốt cho tôi thử nó.

var i = 0; 
@foreach (var data in Model) 
{ 
    i++; 
    <th scope="row"> 
      @i 
    </th>.... 
}... 
Các vấn đề liên quan