2013-04-11 28 views
6

trong trang aspx của tôi, tôi thường sử dụng sau đây và nó hoạt động tốt:Có hợp lệ để sử dụng `<% =" {0}, {1} ", arg1, arg2%>` thay cho `<% = string.Format (" {0}, {1} ", arg1, arg2)%> `trong trang aspx ASP.NET

<%= "{0}, {1}", arg1, arg2 %>

tôi sử dụng ReSharper để phân tích mã. Tôi chỉ cần nâng cấp cho v6.1 đến 7 và nó được đem lại cho tôi hai lỗi sau đây:

"Expression dự kiến"

"Phương pháp '__ReSharper_Render' có 1 tham số (s) nhưng được gọi với 3 tham số (s) "

Cú pháp tôi sử dụng không đúng? Tôi muốn tiếp tục sử dụng nó vì tôi thấy nó khá thanh lịch và nhỏ gọn. Nếu nó là chính xác (tôi nghĩ rằng nó nên được như nó hoạt động), bất kỳ ý tưởng làm thế nào để nói với ReSharper hoặc bỏ qua nó hoặc đối xử với nó như là hợp lệ?

+3

Tại sao thậm chí sử dụng định dạng chuỗi? không phải là tương đương với _ <%=arg1%>, <%=arg2 %> _? – penguat

+0

Không thực sự tương đương. Tùy thuộc vào định dạng chuỗi và số lượng đối số có thể không đọc được. Và IDE có thể định dạng lại nó. – Saurabh

Trả lời

4

Saurabh, bạn đang sử dụng chi tiết triển khai của ASP.NET. Đó là thực hành xấu. Tốt hơn là chỉ định rõ ràng:

<%= string.Format("{0}, {1}", arg1, arg2) %> 
+0

Cảm ơn câu trả lời. Trên thực tế nó đã được ReSharper 6.1 đề nghị định dạng nhỏ gọn. Và phiên bản mới hơn không và hiển thị nó dưới dạng lỗi. Chỉ cần cho kiến ​​thức của tôi, bạn có thể giải thích ý của bạn bằng "chi tiết triển khai" không? – Saurabh

+1

ASP.NET tạo mã như thế này cho ví dụ của bạn: 'System.Web.UI.HtmlTextWriter @w; w.Write ("{0}, {1}", arg1, arg2) ' Nếu, ví dụ, trong tương lai chúng gán cho nó nắm tay biến - mã của bạn sẽ bị hỏng:' System.Web.UI.HtmlTextWriter @ w; đối tượng tmp = "{0}, {1}", arg1, arg2; w.Write (tmp); ' – derigel