【问题标题】:Ajax Callback for jquery functionjquery函数的Ajax回调
【发布时间】:2013-03-27 08:36:32
【问题描述】:

我正在开发一个 ASP.NET MVC 4 项目,它是某种评估工具。 在我的同事看来,我正在用从数据库请求的数据填充数据表。 在第一列中,我显示了姓名,在第二列中,我正在显示指向他们个人文件的链接。 该视图位于名为“PersoonlijkeFichePartial”的部分中,因此当我单击数据表中的链接时,它必须在数据表下的 div 中打开部分。我通过 ajax 调用来做到这一点。 但是我的结果 div 是空的,我不想在我的视图中看到它,所以我用 jquery 做了。 现在的问题是,当我单击数据表中的链接(使用 ajax 调用)时,结果 div 不会显示自己(我需要某种回调?)

编辑 我不需要发布我的控制器操作,如果我剪切隐藏结果 div 的 jquery 代码,部分视图是可见的(当我点击我的表中的链接时),但我需要代码来隐藏那个 div,所以在有人点击我表中的链接之前它不存在。

代码如下:

<div class="ContentDiv">
    <table id="table_id" class="display">
        <thead>
            <tr>
                <th>
                    @Html.DisplayNameFor(model => model.Naam)
                </th>
                <th>Persoonlijke Fiche
                </th>
                <th>Functiebeschrijving
                </th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in Model)
            {
                <tr>
                    <td>
                    @Html.DisplayFor(modelItem => item.Naam)
                    <td>
                        @Ajax.ActionLink("Persoonlijke Fiche", "PersoonlijkeFichePartial", new { account = item.Account }, new AjaxOptions { UpdateTargetId = "result"})
                    </td>
                    <td>
                        @Html.ActionLink("Functiebeschrijving", "Details", new { account = item.Account })
                    </td>
                </tr>
            }
        </tbody>
    </table>
</div>
<div id="generate" class="ContentDiv">
    <div id="result"></div>
</div>



@section scripts {
    <script type="text/javascript" src="~/Scripts/jquery.dataTables.js"></script>
    <script>
        $(document).ready(function () {
            $('#table_id').dataTable({
                "aoColumns": [{ "bSortable": true }, { "bSortable": false }, {     "bSortable": false }]
            }
                );
        });
        $(function () {
            if ($("div#result").html() == "") {
                $("div#generate").hide();
            }
        });
    </script>
}

【问题讨论】:

  • 是我自己还是 asp.net 真的把简单的东西搞得一团糟?

标签: ajax jquery asp.net-mvc-4 asp.net-ajax


【解决方案1】:

尝试像这样编辑您的代码:

<script>
        $(document).ready(function () {
            $('#table_id').dataTable({
                "aoColumns": [{ "bSortable": true }, { "bSortable": false }, {     "bSortable": false }]
            });
            toggleResultDiv()
        });

        function toggleResultDiv() {
            if ($("div#result").html() == "") {
                $("div#generate").hide();
            }
            else $("div#generate").show();
        }
    </script>

并像这样更改您的 ajax 调用:

@Ajax.ActionLink("Persoonlijke Fiche", "PersoonlijkeFichePartial", new { account = item.Account }, new AjaxOptions { UpdateTargetId = "result", OnSuccess = "toggleResultDiv"})

您需要调用显示或隐藏 div 的函数。在你的情况下,它只被调用一次并且总是隐藏div#generate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2021-08-13
    相关资源
    最近更新 更多