ASCX结果调用在ASPX中找到的javascript

时间:2015-02-06 18:54:10

标签: javascript c# jquery asp.net

我有一个用户控件(MyListSelect.ascx),它只有一个单选按钮列表......

<%@ Control Language="C#" %>
<select>
    <option disabled selected>Select Options</option>
    <option>
        option 1
    </option>
    <option>
        option 2
    </option>
</select>

我的ASPX页面有:

<%@Register Src="~/MylistSelect.ascx" 
            TagName="listSelect" 
            TagPrefix="ListControl" %> 

<ListControl:listSelect runat="server" />

这在我的ASPX中显示一个下拉菜单(呜呜);

我希望能够(形成ASPX)根据下拉列表的所选索引更改事件调用javascript函数,因为所选的菜单项在不同页面中具有不同的功能。我没有&#39;想要在ASCX中定义所有可能的功能。

有什么建议吗? lso,为什么<ListControl:listSelect runat="server" />必须运行服务器?还有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

它必须是runat=server,因为用户控件是服务器端的.net引擎处理的特殊控件。 ASP.NET用户控件在客户端没有任何意义,它需要在发送给客户端之前进行“翻译”。

为了首先响应选定的索引更改事件,您需要为select分配一个id或css类,以便通过jQuery选择器更准确地识别它(假设您要使用jQuery因为你把它添加到问题标签中。)

这样的事情可以解决问题

<强> HTML

<select id="mySelect">
    <option disabled selected>Select Options</option>
    <option>
        option 1
    </option>
    <option>
        option 2
    </option>
</select>

<强> JAVASCRIPT

// Shorthand for $( document ).ready()
$(function() {
    $('#mySelect').change(function(){
         // your logic when index changed here
    });
});

答案 1 :(得分:1)

首先,将您的选择更改为:

<select onchange="yourJSFunction();">

当您在页面内使用控件时,您还将提供yourJSFunction

<script type="text/javascript">
    function yourJSFunction() {
        alert("yourJSFunction 1");
    }
</script>

<ListControl:listSelect runat="server" />

在另一页:

<script type="text/javascript">
    function yourJSFunction() {
        alert("yourJSFunction 2");
    }
</script>

<ListControl:listSelect runat="server" />