ajax发布到http post action方法,没有刷新特殊负载

时间:2013-10-25 13:53:51

标签: c# javascript ajax asp.net-mvc-4

首先,我必须说我在这里有一点脑筋急转弯。我可能对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);
    }

1 个答案:

答案 0 :(得分: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>