Tôi có một điều khiển web mà trông như thế nàysử dụng <%= %> hoặc <%# %> với runat = server trong ASP.NET
public class Foo : WebControl { [Bindable(true)] [Category("Default")] [DefaultValue("")] [Localizable(true)] public string Bar { get; set; } protected override void Render(HtmlTextWriter output) { output.WriteLine(Bar); } }
Tôi muốn đặt webcontrol này trong trang aspx của tôi như vậy:
<cc1:Foo Bar="<%= Fa.La.La %>/otherstuff" runat="server" />
(rõ ràng là mã này được đơn giản hóa để hiển thị sự cố)
Trong phương thức Render của tôi biến Fa.La.La không được đánh giá. Nó đến ở dạng văn bản thô "<% = Fa.La.La%>" Làm cách nào để đánh giá nó?
Tôi không cụ thể cách các biến được truyền vào. Nếu các biến có thể được đánh giá nếu chúng được chuyển vào như <% # ...%>, hoạt động tốt. Vấn đề là tôi có một số biến phía máy chủ mà tôi muốn được đánh giá trước/trong khi phương thức Render() của tôi được gọi.
Điều duy nhất tôi có thể nghĩ là sử dụng regex để lấy nội dung của <% = ...%> và sử dụng sự phản chiếu hoặc điều gì đó, nhưng phải có cách thanh lịch hơn để thực hiện việc này.
Câu hỏi này khá giống với using server variables in a href <%= xx %> with runat=server, nhưng không hoàn toàn giống nhau vì không có câu trả lời nào hữu ích.
Hãy thử sử dụng này Chú ý dấu nháy đơn và nháy kép Sự khác biệt. Tôi hy vọng nó có thể giải quyết vấn đề –
Moons