2012-06-25 53 views
8

tôi có mã này (lồng vào bên trong một hình thức bưu điện) nhưng đang liên tục nhận được lỗi rằng nó thiếu bế mạc }MVC Razor vòng lặp for

@for(int i=0;i< itemsCount; i++){ 
    <input type="hidden" @string.Format("name= item_name_{0} value= {1}",i,items[i].Description) > 
    <input type="hidden" @string.Format("name= item_name_{0} value= {1}",i,items[i].UnitPrice.ToString("c"))> 
} 

Tôi đã nhìn chằm chằm vào nó đủ lâu .. .có ai giúp được không?

+2

Tôi không nghĩ rằng đoạn mã này có một vấn đề. Nó cho thấy không có lỗi trên máy tính của tôi. Có lẽ bạn có thêm một '{' ở đâu đó trong mã. – gideon

Trả lời

10

Hãy thử đặt @: trước khi mã html của bạn như thế này:

@for(int i=0;i< itemsCount; i++) 
{ 
    @: html code here 
} 

Alternatives: 1. quấn mã html của bạn với <text></text> 2. sử dụng HtmlHelper để tạo mã html

0

Hoặc bạn có thể sử dụng trình trợ giúp Html.Raw

@for(int i=0; i < itemsCount; i++) 
{ 
    <input type="hidden" @Html.Raw(string.Format("name= item_name_{0} value= {1}",i,items[i].Description)) /> 
    <input type="hidden" @Html.Raw(@string.Format("name= item_name_{0} value= {1}",i,items[i].UnitPrice.ToString("c"))) /> 
} 
0

thử:

@for (int i = 0; i < itemsCount; i++) { 
    <input type="hidden" name="@("item_name_" + i)" value="@items[i].Description" /> 
    <input type="hidden" name="@("item_name_" + i)" value="@(items[i].UnitPrice.ToString("c"))" /> 
} 

Lưu ý các thay đổi/ghi chú trong phần còn lại của prashanth.

1

Cách dễ nhất là sử dụng Trình trợ giúp HTML. Mã sẽ được làm sạch là tốt (định dạng tên của bạn cho Mô tả và UnitPrice có vẻ theo cùng một định dạng; bạn có thể muốn thay đổi nó)

@for (int i = 0; i < itemsCount; i++) 
    { 
     @Html.Hidden(string.Concat("ïtem_name_", i), items[i].Description) 
     @Html.Hidden(string.Concat("ïtem_name_", i), items[i].UnitPrice.ToString("c"))   
    } 
2

bạn có thể lưu ý rằng để viết một khối mã bạn có thể viết theo hai cách

  1. Đối với Chỉ một dòng Block, giống như bạn đã viết trong mã của bạn và điều này chỉ bao quanh dòng có chứa @
  2. trước đây đối với Chặn mã bằng @ {...}, điều này cho phép bạn tự do sử dụng Mã mà không có @ ngoại trừ trong biểu thức HTML .cho bất kỳ html/văn bản nào bạn phải đặt trước bằng @: bạn muốn in như vậy, nếu không Razor sẽ cố gắng diễn giải nó dưới dạng mã (Vì @: xác định nội dung là đen cho mỗi biểu hiện mã theo @: bạn phải sử dụng @ một lần nữa cho mã)

Trong trường hợp của bạn, bạn có thể làm như sau

@{ 
    for(int i=0; i < itemsCount; i++) 
    { 
     @:<input type="hidden" @Html.Raw(string.Format("name= item_name_{0} value= {1}",i,items[i].Description)) /> 
     @:<input type="hidden" @Html.Raw(@string.Format("name= item_name_{0} value= {1}",i,items[i].UnitPrice.ToString("c"))) /> 
    } 
} 
Các vấn đề liên quan