asp.net
2009-07-10 4264 views 6 likes 
6

Tôi có một kiểm soát đầu vào trên một trang như thế này:Tại sao các thẻ <%=%> hiển thị là " <% =%> "?

<input 
    type="button" 
    causesvalidation="false" 
    runat="server" 
    id="resetButton" 
    value="Iptal" 
    onclick='return 
    resetForm("<%=projectValidationSummary.ClientID%>");' /> 

khi nó được trả lại

<input 
    name="ctl00$ContentPlaceHolder1$EditForm$resetButton" 
    type="button" 
    id="ctl00_ContentPlaceHolder1_EditForm_resetButton" 
    value="Iptal" 
    onclick="return resetForm(&quot;&lt;%=projectValidationSummary.ClientID%>&quot;);" /> 

tôi sử dụng <%=%> thẻ trên trang nhưng nó được trả lại như

&quot;&lt;%=%>&quot; 

Can bất cứ ai cho tôi biết lý do tại sao điều này đang xảy ra?

+0

Đầu vào của bạn có phải là nút hoặc nút Kane

+1

Tôi nghĩ rằng câu hỏi có thể có câu trả lời khác nhau tùy thuộc vào những gì bạn đang cố gắng làm. Đây có phải là JavaScript, JSP hoặc ASP không? –

+0

đó là trang asp.net và <điều khiển đầu vào có đặc tả máy chủ runat., Tôi cũng đã thử ý tưởng của andrew nhưng không có thay đổi nào được hoan nghênh :( – dankyy1

Trả lời

4

<% =%> chỉ sử dụng được bên trong html chữ và không thể được sử dụng trên thuộc tính điều khiển máy chủ.

Thay vào đó bạn chúng ta nên databinding <% #%>, và trong trường hợp của bạn tôi nghĩ rằng bạn đang cố gắng để kích hoạt một chức năng javascript về phía khách hàng của bạn và sau đó mã của bạn sẽ trông như thế này:

<asp:button 
causesvalidation="false" 
runat="server" 
id="resetButton" 
text="Iptal" 
onclientclick='<%# String.Format("return resetForm(\"{0}\");", projectValidationSummary.ClientID) %>' /> 

và ở phía máy chủ, bạn nên liên kết thuộc tính với mã này (có thể trong sự kiện Page.Load):

if(!this.IsPostBack) 
{ 
    this.resetButton.DataBind(); 
} 
+0

thnx cho chúng tôi giúp tôi đã thực hiện chức năng js "resetForm" không tham số và tôi đã nhận mục clientId bên trong hàm javascript trong trường hợp này ... – dankyy1

1

Vì có một mã hóa HTML đang diễn ra cho chuỗi trong hàm resetForm.

0

Điều này có thể hiển nhiên, nhưng bạn có đảm bảo rằng loại tệp phù hợp không? I E. jsp cho một JSP hoặc asp cho một ASP?

Điều này sẽ bị trình biên dịch bắt trước khi mã hóa. Có thể là có tiền xử lý trước khi biên dịch trang không? Id của bạn bị thay đổi và nó đã thêm phần tử tên ...

3

Bạn không thể trộn và kết hợp các khối hiển thị với văn bản cho các giá trị. Hãy thử điều này

onclick='<%= "return resetForm(\"" + projectValidationSummary.ClientID + "\");" %>' 
3

Tháo runat="server" - bạn không cần nó nếu bạn đang làm một ghi đen (<%=)

Vì vậy:

<input 
    type="button" 
    causesvalidation="false" 
    id="resetButton" 
    value="Iptal" 
    onclick="return resetForm('<%= projectValidationSummary.ClientID %>');" /> 

Hoặc sử dụng một DataBind thay vì:

<input 
    type="button" 
    causesvalidation="false" 
    id="resetButton" 
    runat="server" 
    value="Iptal" 
    onclientclick="return resetForm('<%# projectValidationSummary.ClientID %>');" /> 

//in code behind: 
resetButton.DataBind(); 

.Net không thích chữ viết bên trong điều khiển được hiển thị trên máy chủ tấm.

+1

Trong vùng mã thứ hai, onlick là sự kiện máy chủ và 'return resetForm ...' không phải là bài tập hợp lệ. – bang

+0

Cũng phát hiện - Tôi đã thay đổi nó thành onclientclick – Keith

3

Vì bạn đã sử dụng runat = "server", bạn nên đặt thuộc tính này ở chế độ code-behind.

resetButton.attributes.add ("onclick", ".....");

Các vấn đề liên quan