用户控制需要帮助

时间:2010-09-29 10:40:42

标签: jquery asp.net-mvc user-controls

我正在使用如下的用户控件(.ascx)

 <div class="ui-widget" id="w_instruction">
        <div class="ui-state-instruction ui-corner-all w-msg"> 
                    <a id="btn_instruction_close" class="ui-dialog-titlebar-close ui-corner-all" href="#" style="float:right;"><img src="../../Images/i_close_blue.png" border="0"/></a>
                    <img src="../../Images/i_info_24.png" align="absmiddle"/>
                    <span id="i_msg"></span>
        </div>
    </div> // this code goes in to instruction.ascx

在我的aspx页面中,我正在使用此用户控件,如下所示。

 <%Html.RenderPartial("Instruction"); %> 

并使用jquery我正在更改div中的消息。

 <script type="text/javascript">
            $("#i_msg").text("Please Enter the Infringement Details.");
        </script>

工作正常。但现在我想在页面的两个不同位置使用此用户控件。 我需要一些方法来区分两个地方的用户控制。任何一个过程都是受欢迎的。

注意 - 我正在使用ASP.net MVC 2应用程序

2 个答案:

答案 0 :(得分:0)

将div中的每个部分包裹在不同ID中,然后只使用IDS:

var targetA = $("#divA #i_msg");
var targetB = $("#divB #i_msg");

然而,请注意,这是完全错误的。您不应该在页面上有重复的ID,因为它是无效的标记。您应该应用类名而不是ID:

<div id="divC">
    /* Created by RenderPartial */
    <div class="ui-widget">
        <div class="ui-state-instruction ui-corner-all w-msg"> 
            ....
            <span class="msg"></span>
        </div>
    </div>
</div>

因此,当您将此包装在另一个ID为divC的div中时,您会选择以下内容:

var targetB = $("#divC .msg");

答案 1 :(得分:0)

我建议您使用强类型控件:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
<div class="ui-widget" id="w_instruction">
    <div class="ui-state-instruction ui-corner-all w-msg"> 
        <a id="btn_instruction_close" class="ui-dialog-titlebar-close ui-corner-all" href="#" style="float:right;">
            <img src="../../Images/i_close_blue.png" border="0"/>
        </a>
        <img src="../../Images/i_info_24.png" align="absmiddle"/>
        <span id="i_msg"><%= Html.Encode(Model) %></span>
    </div>
</div>

然后将控件包含在具有不同模型的不同位置:

<% Html.RenderPartial("Instruction", "text 1"); %> 

和另一个地方:

<% Html.RenderPartial("Instruction", "text 2"); %> 

如果你需要使用javascript修改文本,请用具有特定id的div包装用户控件并使用类选择器。