简单的ASP.Net问题<%#和<%=无效!

时间:2010-07-21 16:23:29

标签: c# javascript asp.net

你可以在下面看到我想要做的事情。我试图做同样事情的两种方法,但这些都不起作用。我没有得到的根本是什么?

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

OR

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

public void GetJavascriptString()
{
     return "javascript:$('#" + fileInput1.ClientID + "').uploadifyUpload();";
}

有几个答案有效且不起作用。我认为James Curran有我想要的东西。原因,虽然我不确定为什么我的代码不起作用并修复它。感谢您的所有答案。

5 个答案:

答案 0 :(得分:3)

这是一个非常好的不同脚本标签。

http://naspinski.net/post/inline-aspnet-tags-sorting-them-all-out-(3c25242c-3c253d2c-3c252c-3c252c-etc).aspx

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

更新

完成您要做的事情的一种方法是:

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

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

这只是从您的超链接调用一个javascript函数,该函数将运行您尝试执行的jquery。

另一种可以说是更好的方法是使用代码隐藏或内联脚本来设置导航网址属性:

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

答案 1 :(得分:1)

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

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

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

试试。

答案 2 :(得分:0)

'&LT;%= fileInput1.ClientID%GT;'

更新

NavigateUrl = “JavaScript的: '&LT;%= fileInput1.ClientID%GT;' uploadifyUpload()” &GT;

答案 3 :(得分:0)

据我所知,两者都应该做你想做的事。 (假设GetJavascriptString()实际上在代码隐藏文件中或至少在<% %>块中。)

你得到什么错误?

答案 4 :(得分:0)

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

 <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注释(<!-- comment -->

 <%-- <asp:TextBox ID="uxTextBox1" runat="server" Text="Howdy!" /> --%>]

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" %>