1

私は他の解決策を見てきましたが、私のケースには当てはまらないと思います。

問題は、すべてがうまく機能し、コードを通過することです。そして、デバッグすると、すべての値とすべてが正しく返されます。しかし、ネットワークを見ると、「\"WebGrid\" ヘルパーで Ajax サポートを有効にするには、jQuery スクリプト参照が必要です」という例外が返されます。

アイデアは、ドロップダウン メニューから選択が行われると、webGrid が含まれる部分ビューを更新しようとしているということです。

だからコントローラ

    [HttpGet]
    public ActionResult FilterGrid(string selVal)
    {
        ItemType itemType = db.ItemTypes.FirstOrDefault(type => type.Name == selVal);

        IEnumerable<Item> items = db.Items.ToList().Where(types => types.ItemTypeId.ToString() == itemType.Id.ToString());

        return PartialView("_Grid", items.ToList());
    }

私はグリッドを部分的に持っています:

<div id="grid">
    @Html.Partial("_Grid", items)
</div>

そしてグリッド自体:

@using ManagerApp.Models
@model IEnumerable<Item>

@{ 
     var grid = new WebGrid(Model.ToList(), rowsPerPage: 5, ajaxUpdateContainerId:"grid");
    }
    @grid.GetHtml(columns: grid.Columns(
            grid.Column(columnName: "Name", header: "Name", format: (item) => @Ajax.ActionLink((string)item.Name, "ItemDetails", new { id = item.Id }, new AjaxOptions() { HttpMethod = "POST", UpdateTargetId="viewData", InsertionMode = InsertionMode.Replace }), style: "gridStyle"),
            grid.Column(columnName: "Price", header: "Price"),
            grid.Column("", format: (item) => @Ajax.ActionLink("Edit", "EditItem", new { id = item.Id }, new AjaxOptions() { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "viewData" })),
            grid.Column("", format: @<text>@Html.ActionLink("Delete", "DeleteItem", "ItemType", new { id = item.Id }, null)</text>)
 ))

そして ajax スクリプト:

/// <reference path="jquery-1.5.1.js" />

$(function () {
    $("#GridItemTypes").change(function (event) {
        $.ajax({
            type: 'GET',
            url: "ItemType/FilterGrid",
            data: { selVal: $(this).find("option:selected").html() }
        });


    }
    );
});

したがって、選択時にすべてのフィルタリングを通過し、部分ビューに入り、正しい値を持つように見えますが、レンダリングされません。

ここで何が欠けていますか?

ページの一番下に参照を配置すると、ページの他の何かが壊れただけで、これはまだ機能していないため、ページの一番上に参照があります。

また、Post を実行しようとしているのか、Get を実行しようとしているのかは問題ではありません。

4

1 に答える 1

0

javascript/jquery 参照をどの順序で追加していますか?

jquery参照が一番上にあることを確認してください。

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/other1.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/other2.js")" type="text/javascript"></script>
于 2012-09-10T11:03:06.037 に答える