0

首先,我必须说我在这里有点脑筋急转弯。我可能对 ASP.Net MVC4 有点陌生,但我从未尝试过这样的事情。最终目标是标准页面中部分页面的一种树视图。现在我正在尝试使用 ajax 在 div 中加载部分内容,同时将用户选择传递给下一个视图(它将用于缩小页面结果)。

<div>
    <div>
        <form id="myForm" action="ScheduleZone" method="post">
            <table class="table">
                <tr>
                    <th>Store
                    </th>
                </tr>
                @foreach (ACS.Models.Tree rate in TempML.Tree)
                {
                    <tr>
                        <td>@Html.DisplayFor(model => rate.Store)@Html.ActionLink("+", "            ScheduleZone", rate, new { @class = "g" })
                        </td>
                    </tr>
                }
            </table>
        </form>
    </div>
    <div class="div" id="mainDiv">
    </div>
    <div class="div" id="Zone">
    </div>
    <div class="div" id="Sell">
    </div>
    <div class="div" id="Meh">
    </div>
    <div class="div" id="Sk">
    </div>
</div>

<script type="text/javascript">
    $(".g").click(function () {
        $("#mainDiv").load("/Home/Zone");
    });
</script>

调用 http post 操作后,我似乎无法调用 div 中的页面。它只返回不在 div 中的部分视图。

    public ActionResult Zone(CommisionsTree tree)
    {
        string banner = "2";
        CommissionDAO dao = new CommissionDAO();
        DataSet commissionInfo = dao.GetCommissionRates(tree, banner);
        ModelList ml = new ModelList();
        foreach (DataTable Table in commissionInfo.Tables)
        {
            foreach (DataRow row in Table.Rows)
            {
                Tree commTree = new Tree();
                commTree.Banner = Convert.ToInt32(banner);
                commTree.Store = tree.Store;
                foreach (DataColumn column in Table.Columns)
                {
                    switch (column.ColumnName)
                    {
                        case "SCHED_ZONE":
                            commTree.ScheduleZone = row[column].ToString();
                            break;
                        default:
                            break;
                    }
                }
                ml.CommissionTree.Add(commTree);
            }
            TempData["TempModelList"] = ml;
        }
        return  PartialView(ml);
    }
4

1 回答 1

1

您可以用 AjaxLink 替换您的链接 + javascript

@Ajax.ActionLink("+", "Zone", "Home", new AjaxOptions() { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "mainDiv" }, htmlAttributes: new { @class="someClasses", id = "anId"})

在这种情况下,它在加载后跟随链接的原因是因为您需要在 javascript 末尾返回 false 。

<script type="text/javascript">
    $(".g").click(function () {
        $("#mainDiv").load("/Home/Zone");
        return false;
    });
</script>
于 2013-10-25T14:15:27.673 回答