将JavaScript传递给局部视图

将JavaScript传递给局部视图,javascript,jquery,.net,asp.net,asp.net-mvc-3,Javascript,Jquery,.net,Asp.net,Asp.net Mvc 3,我正试图找到一个通用的解决方案来解决ASP.NETMVC3中触发JavaScript函数的按钮。为此,我创建了一个C#ToolButton类和一个同名的局部视图,如下所示: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ToolButton>" %> <%@ Import Namespace="Models.Shared" %> <scr

我正试图找到一个通用的解决方案来解决ASP.NETMVC3中触发JavaScript函数的按钮。为此,我创建了一个C#ToolButton类和一个同名的局部视图,如下所示:

<%@ Control Language="C#" 
            Inherits="System.Web.Mvc.ViewUserControl<ToolButton>" %>

<%@ Import Namespace="Models.Shared" %>

<script src="<%= Url.Content("~/Scripts/Utility/toolbutton.js") %>" type="text/javascript"></script>

<script type="text/javascript">

   $(function () {
      $('<%: String.Format("#{0}", Model.Id) %>').toolbutton({ 'onClick': function () { alert('xyz'); } });
   });

</script>

<div id="<%: Model.Id %>" class="tool-button"></div>

$(函数(){
$('').toolbutton({'onClick':函数(){alert('xyz');}});
});
注意到onClick处理器了吗?我马上就来。toolbutton.js是一个自定义jQuery扩展,处理所有事件。现在的想法是,比如说,有一个IEnumerable,带有触发不同(纯JavaScript驱动)事件的按钮,如下所示:

<%@ Control Language="C#" 
            Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<ToolButton>>" %>

<%@ Import Namespace="Models.Shared" %>

<div class="tool-panel">
   <table>
      <tbody>
         <tr>

            <% foreach (var toolButton in Model)
               { %>
                  <td><% Html.RenderPartial("ToolButton", toolButton); %></td>
            <% } %>

         </tr>
      </tbody>
   </table>
</div>

现在的问题是,我不知道如何将事件处理程序传递给ToolButton的特定实例。我想为枚举中的任何单个按钮执行自定义JavaScript处理程序,例如,一个按钮清除文本区域,另一个按钮用一些预格式化的文本填充该文本区域-当单击该按钮时,即我需要为onClick传递处理程序,该处理程序在ToolButton实例初始化时设置(通常在部分渲染ToolButton.ascx时)


有没有办法将JavaScript传递给局部视图?

您可以为工具按钮的处理程序名称制定一个约定

<script type="text/javascript">

  $(function () {
    $('<%:String.Format("#{0}", Model.Id) %>').toolbutton({
        'onClick': function () {
            if (typeof <%=String.Format("OnClickFor{0}", Model.Id)%> == 'function') { 
              <%: String.Format(OnClickFor{0}", Model.Id) % >();
            }
        });
  });

</script>

<div id="<%: Model.Id %>" class="tool-button"></div>

$(函数(){
$('').toolbutton({
“onClick”:函数(){
if(typeof=='function'){

不知道你想做什么,但是js,jq可以传递到你想传递的任何地方。使用dom或模态技巧是的,这种类型的按钮将在不同的上下文中出现在多个页面上。基本思想是对一个基本上行为相同的通用按钮(mouseover/mousedown/mouseup/mouseenter/mouseleave)有一个局部视图但是在包含按钮的页面上有一个专用的click()处理程序。为了呈现按钮,我提供了ToolButton(C#class)作为该局部视图的模型。然后,棘手的部分是为该模型的特定实例提供一个onClick()事件处理程序。
<script type="text/javascript">
  var onClickFor01 = function(){alert('Clicked onClickFor01 ')}
</script>

<div class="tool-panel">
   <table>
      <tbody>
         <tr>

            <% foreach (var toolButton in Model)
               { %>
                  <td><% Html.RenderPartial("ToolButton", toolButton); %></td>
            <% } %>

         </tr>
      </tbody>
   </table>
</div>