0

categoryIdを返送し、新しい厳密に型指定されたオブジェクトでページを更新しようとしています。何らかの理由で、cateogryIdがnullとして入ってくる...

$(function () {
    $('#hhh').change(function () {
        var url = $(this).data('url');
        var categoryId = $(this).val();
        $.ajax({
            url: url,
            type: 'GET',
            cache: false,
            data: { categoryId: categoryId },
            success: function (result) {
                // TODO: manipulate the result returned from the controller action
            }
        });
    });
});

<h2>Index</h2>
@Html.ActionLink("Create New Listing", "Create")
<br/>
<strong>Filter Listings</strong>
@Html.DropDownListFor(
    m => m.SelectedCategoryGuid, 
    Model.Categories, 
    "Select a Category", 
    new {
        id = "hhh",
        data_url = Url.Action("SortListing", "Listing") 
    }
)

コントローラーコード:

public ActionResult SortListing(string categoryGuid)
    {
        var listingCategory = new ListingCategory();
        listingCategory.Id = _tourismAdminService.GetByGuid<ListingCategory>(Guid.Parse(categoryGuid)).Id;
        var listings = new List<Listing>();

        foreach (var listing in _tourismAdminService.ListAllEntities<Listing>())
        {
            if (listing.CategoryId == listingCategory.Id)
            {
                listings.Add(listing);
            }
        }

        return RedirectToAction("Index", "Listing", listings);
    }
4

2 に答える 2

2

ああ、それは役に立ちます。JavaScriptを次のように変更します。

$(function () {
    $('#hhh').change(function () {
        var url = $(this).data('url');
        var categoryId = $(this).val();
        $.ajax({
            url: url,
            type: 'GET',
            cache: false,
            data: { categoryGuid: categoryId },
            success: function (result) {
                // TODO: manipulate the result returned from the controller action
            }
        });
    });
});

data: {...}JavaScriptの行を変更したことに注意してください。dataバインディングを機能させるには、行のパラメーター名をActionメソッドのパラメーターと一致させる必要があります。

于 2012-09-18T19:13:21.517 に答える
1

アクションメソッドはという名前のパラメーターを期待してcategoryGuidいますが、ajaxコードとは異なる名前のパラメーターを渡しています。JavaScriptコードで、変更

 data: { categoryId: categoryId },

data: { categoryGuid: categoryId },
于 2012-09-18T19:14:09.580 に答える