【问题标题】:Load a function in a cshtml file在 cshtml 文件中加载函数
【发布时间】:2018-04-05 16:09:00
【问题描述】:

我正在开发一个有 4 个导航选项卡的 Web 应用程序。

名为 index.cshtml 的主 cshtml 文件包含 4 个导航选项卡作为部分视图:

<div class="tab-content" id="mainTab" >
        <div class="tab-pane fade in active" id="@ViewData["Stamp"]" role="tabpanel" aria-labelledby="stempel-tab">
          @{ViewBag.Title = "Index";}
          @{Html.RenderAction("_Stempel", "Home");}
        </div>
        <div class="tab-pane fade" id="@ViewData["BackDated"]" role="tabpanel" aria-labelledby="backdated-tab">
          @{ViewBag.Title = "Index";}
           @{Html.RenderAction("_BackDated", "Home");}
        </div>
        <div class="tab-pane fade" id="@ViewData["History"]" role="tabpanel" aria-labelledby="historie-tab">
           @{ViewBag.Title = "Index";}
           @{Html.RenderAction("_Historie", "Home");}
        </div>
        <div class="tab-pane fade" id="@ViewData["ChangePin"]" role="tabpanel" aria-labelledby="changepin-tab">
           @{ViewBag.Title = "Index";}
           @{Html.RenderAction("_Pinaendern", "Home");}          
        </div>
    </div> 

Histori.cshtml 文件有 2 个功能:

ShowBookings();
CleanNoHistoryMessage();

如果我将函数放在 document.ready 中,我需要在每次 WebApp 执行函数时更新。

 $(document).ready(function () {
        ShowBookings();
        CleanNoHistoryMessage();

    });

History.cshtml

<script type="text/javascript">


        $(document).ready(function () {
            ShowBookings();
            CleanNoHistoryMessage();

        });


        function ShowBookings() {

             // Some Code
            }

        function CleanNoHistoryMessage() {

            // Some Code
            }


    </script>

    @{
        Layout = null;
    }

    <h3>@ViewData["TextLabel_BookingHistoryHeadline"]</h3>

    <ul data-role="listview">
        <div data-role="fieldcontain">

            <ul id="Liste">
                <li>@ViewData["TextLabel_BookingHistoryNoBookings"]</li>
            </ul>

        </div>

     </ul>

我想在每次点击选项卡时执行这些功能。我该怎么做?

【问题讨论】:

  • 在发布此类问题之前先做一些研究
  • 我不像你这个笨小孩那样的专家
  • 我也不是专家,我只是在编程之前学会了如何使用谷歌搜索:D

标签: javascript jquery html razor partial-views


【解决方案1】:

使用 jQuery .on() 事件处理程序附件:

将一个或多个事件的事件处理函数附加到所选元素。

在点击时是 spicifique,所以你的代码是这样的:

$("#mainTab .tab-pane").on("click", function() {
  console.log($(this).text() + "Is clicked");
  /*    ShowBookings();
        CleanNoHistoryMessage(); */
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<div class="tab-content" id="mainTab">
  <div class="tab-pane fade in active"  role="tabpanel" aria-labelledby="stempel-tab">
    tab1
  </div>
  <div class="tab-pane fade"  role="tabpanel" aria-labelledby="backdated-tab">
    tab2
  </div>
  <div class="tab-pane fade"  role="tabpanel" aria-labelledby="historie-tab">
    tab3
  </div>
  <div class="tab-pane fade"  role="tabpanel" aria-labelledby="changepin-tab">
    tab4
  </div>
</div>

【讨论】:

  • 感谢您的回答。这些函数在 historie.cshtml 文件中定义。选项卡在 index.cshtml 中定义。事件处理程序将放置在 index.cshtml 中。如何使用另一个 cshtml 文件中的函数?
  • @JohannaGonzalez,你为什么不把这些函数删除到头部或页眉或页脚,并在需要时调用它们
  • 我不想在 document.ready 中调用它们,因为 historie.cshtml 会显示一些不断变化的记录。我想在每次单击选项卡历史记录时更新这些记录,而不是每次更新整个页面时。如何在 HIstrie.cshtml 或 Index.cshtml 中调用这些函数?
猜你喜欢
  • 2017-02-22
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
相关资源
最近更新 更多