Gần đây tôi đã nâng cấp trang web của mình từ ASP.NET MVC3 (Razor) lên MVC4 (Razor2), và thực hiện điều này công cụ xem Dao cạo.Có thể thay đổi đột ngột trong MVC4 Dao cạo có thể được sửa bằng "@: @"
Kịch bản (được đơn giản hóa rất nhiều) được hiển thị bên dưới.
@model IEnumerable<string>
@{ Layout = null; }
<!DOCTYPE html>
<html>
<body>
<div>
@foreach (var x in Model)
{
@string.Format("Foo bar: {0}", x) // Errors in MVC4/Razor2
}
</div>
</body>
</html>
này hoạt động tốt trong MVC3/Razor, tuy nhiên trong MVC4/Razor2 các string.Format
kết quả dòng trong một lỗi của:
bất ngờ "chuỗi" từ khóa sau nhân vật "@". Một khi bên trong mã, bạn không cần phải tiền tố xây dựng như "chuỗi" với "@".
Nếu bạn xóa @
, thì công cụ xem sau đó yêu cầu bạn chấm dứt dòng string.Format
bằng dấu chấm phẩy. Tuy nhiên, ReSharper sau đó cảnh báo (đúng như vậy):
Giá trị trả về của phương pháp thuần túy không được sử dụng.
Hai bản vá Tôi đã tìm thấy cho điều này là một trong hai để sử dụng <text>
:
<text>@string.Format("The value {0}", x)</text>
Hoặc một cách tiếp cận tò mò hơn khi sử dụng @:@
:
@:@string.Format("The value {0}", x)
Đây có phải là một sự thay đổi được biết đến và ghi nhận trong công cụ xem Razor?
Cảnh báo từ resharper trong trường hợp này là không chính xác, và phải được thông báo cho họ hay bị ức chế. Có sự khác biệt giữa mã C# được tạo tại thời điểm thiết kế và trong thời gian chạy, thời gian chạy C# sẽ quấn chuỗi.format với một cuộc gọi phương thức khác, và do đó nó hoàn toàn hợp lệ. Resharper nên bỏ qua lớp lỗi này (và bạn có thể) –