C# 简单的ASP.Net问题<;%#和<;%=不行!

C# 简单的ASP.Net问题<;%#和<;%=不行!,c#,javascript,asp.net,C#,Javascript,Asp.net,你可以在下面看到我想做什么。我尝试过两种方法来做同样的事情,但这两种方法都不起作用。我不明白的基本原理是什么 <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="javascript:$('#<%= fileInput1.ClientID%>').uploadifyUpload()"> </asp:HyperLink> 或 public void GetJav

你可以在下面看到我想做什么。我尝试过两种方法来做同样的事情,但这两种方法都不起作用。我不明白的基本原理是什么

    <asp:HyperLink ID="HyperLink1" runat="server" 
     NavigateUrl="javascript:$('#<%= fileInput1.ClientID%>').uploadifyUpload()">
    </asp:HyperLink>


public void GetJavascriptString()
{
返回“javascript:$('#“+fileInput1.ClientID+”).uploadifyUpload();”;
}
有几个答案是可行的,也有不可行的。我想詹姆斯·科伦有我想要的东西。原因是什么,尽管我不确定我的代码为什么不工作,也不知道如何修复它。谢谢你的回答。

'

更新:

NavigateUrl=“javascript:”“.uploadifyUpload()”>

'

更新:


NavigateUrl=“javascript:”“.uploadifyUpload()”>

据我所知,两者都应该做你想做的事情。(假设GetJavascriptString()实际上位于codebehind文件中,或者至少位于
块中。)


你犯了什么错误?

据我所知,两者都应该做你想做的事。(假设GetJavascriptString()实际上位于codebehind文件中,或者至少位于
块中。)


您遇到了什么错误?

这里有一个非常好的不同脚本标记的运行情况

(通过在Google上搜索asp.net脚本标记找到)

更新:

完成您正试图做的事情的一种方法是:

<script type="text/javascript">
    function GetJavascriptString() {
        return $('#<%= fileInput1.ClientID %>').uploadifyUpload();
    }
</script>

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="javascript:GetJavascriptString()" />

函数GetJavascriptString(){
返回$('#')。uploadifyUpload();
}
这只是从超链接调用一个javascript函数,该函数将运行您尝试执行的jquery

另一种可能更好的方法是使用codebehind或内联脚本设置navigate url属性:

<%  HyperLink2.NavigateUrl = "javascript:$('#" + fileInput1.ClientID + "').uploadifyUpload();";
%>
<asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="javascript:GetJavascriptString()" />

这里是一个非常好的不同脚本标记的运行情况

(通过在Google上搜索asp.net脚本标记找到)

更新:

完成您正试图做的事情的一种方法是:

<script type="text/javascript">
    function GetJavascriptString() {
        return $('#<%= fileInput1.ClientID %>').uploadifyUpload();
    }
</script>

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="javascript:GetJavascriptString()" />

函数GetJavascriptString(){
返回$('#')。uploadifyUpload();
}
这只是从超链接调用一个javascript函数,该函数将运行您尝试执行的jquery

另一种可能更好的方法是使用codebehind或内联脚本设置navigate url属性:

<%  HyperLink2.NavigateUrl = "javascript:$('#" + fileInput1.ClientID + "').uploadifyUpload();";
%>
<asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="javascript:GetJavascriptString()" />

我认为你可以像这样完成你想要的:

 <asp:HyperLink ID="HyperLink1" runat="server" 
     NavigateUrl="myURL" 
     OnClientClick="javascript: if(document.getElementById('ctl00_myHTMLelementID').value.length > 0 ){ $get('ctl00_myHTMLelementID').uploadifyUpload()" >
 </asp:HyperLink>

我们使用OnClientClick(它在任何其他操作之前触发,因此如果返回'False',它不会继续处理任何naviateURL或OnClick),首先确保元素存在,这样我们就不会遇到任何javascript错误,从而冻结页面。”ctl00_myHTMLelementID'是通过在浏览器中查看代码源代码并在HTML中查找ASP.NET为控件命名的内容而获得的

。 根据#和%

ASP.NET注释看起来很像HTML注释(

]
ASP.NET有特殊的数据绑定代码,看起来是这样的,它只能在Repeater或GridView中使用

  <asp:Label ID="uxActiveLbl" runat="server" Text=’<%# DataBinder.Eval(Container.DataItem, "ClientActive").ToString() == "1" ? "Yes" : "No"%>’ />

而且,只需启动代码块,即可在HTML内部运行ASP.NET代码,如下所示:

    <% String myvariable="foobar" %>

我认为你可以像这样完成你想要的:

 <asp:HyperLink ID="HyperLink1" runat="server" 
     NavigateUrl="myURL" 
     OnClientClick="javascript: if(document.getElementById('ctl00_myHTMLelementID').value.length > 0 ){ $get('ctl00_myHTMLelementID').uploadifyUpload()" >
 </asp:HyperLink>

我们使用OnClientClick(它在任何其他操作之前触发,因此如果返回'False',它不会继续处理任何naviateURL或OnClick),首先确保元素存在,这样我们就不会遇到任何javascript错误,从而冻结页面。”ctl00_myHTMLelementID'是通过在浏览器中查看代码源代码并在HTML中查找ASP.NET为控件命名的内容而获得的

。 根据#和%

ASP.NET注释看起来很像HTML注释(

]
ASP.NET有特殊的数据绑定代码,看起来是这样的,它只能在Repeater或GridView中使用

  <asp:Label ID="uxActiveLbl" runat="server" Text=’<%# DataBinder.Eval(Container.DataItem, "ClientActive").ToString() == "1" ? "Yes" : "No"%>’ />

而且,只需启动代码块,即可在HTML内部运行ASP.NET代码,如下所示:

    <% String myvariable="foobar" %>

我认为问题在于ASP.NET不喜欢通过
将文本插入服务器控件

然而,为什么要为超链接这样简单的东西而麻烦服务器控件呢?你真正想要的只是:

<a id="HyperLink1" 
     href="javascript:$('#<%=fileInput1.ClientID%>').uploadifyUpload()"> 
</a>


试试看。

我认为问题在于ASP.NET不喜欢通过
将文本插入服务器控件

然而,为什么要为超链接这样简单的东西而麻烦服务器控件呢?你真正想要的只是:

<a id="HyperLink1" 
     href="javascript:$('#<%=fileInput1.ClientID%>').uploadifyUpload()"> 
</a>


试试看。

以前有人问过这个问题,但因为这是关于非字母数字字符的搜索,所以搜索更加困难。看到这个问题了吗:它们叫什么?我知道,用谷歌搜索是没有用的。以前有人问过这个问题,但因为它是关于非字母数字字符的搜索,所以更难。看到这个问题了吗:它们叫什么?我知道,用谷歌搜索是没有用的,这很好。但是我如何让js绕过它呢?但是“$”(“#”部分很重要(他试图在上面调用jQuery)这基本上就是我正在做的。它没有执行脚本标记。这很好。但是我如何让js绕过它呢?但是“$”(“#”部分很重要(他试图在上面调用jQuery)这基本上就是我所做的。它没有执行脚本标记。href=“javascript:$('#')。uploadifyUpload()”是第一个页面的最后一个页面。第二个方法是:href=”“href=“javascript:$('#')。uploadifyUpload()”是第一个页面呈现到最终页面的内容。第二个方法呈现此内容:href=“”如果我查看源代码并找到控件id,我可以将其硬编码到那里。这就是我所做的,但是当页面被其他人更改时,控件id会更改,页面也会断开。只要控件名称从未更改,就可以正常工作。这就是为什么我希望使用fileInput1.ClientID替代