1

私はmvc3にかなり慣れていないので、ご容赦ください。

これがシナリオです。ビュー内に、小さなメニューと、ユーザーからの入力と名前が一致する製品を示す別の部分ビューがあります。

@model List<BlokCWebwinkelGroep3.Models.Product>

ミニ メニューには、スライダー (2 つのスライダー ハンドル) と「検索」ボタン (どちらも ajax.beginform にあります) があります。検索ボタンをクリックすると、スライダーの 2 つの値がパラメーターとして HttpPost アクションメソッド「検索」に送信されます (これらの値は非表示の入力フィールドにあり、誰かがスライダーをスライドすると JavaScript によって更新されます)。部分ビュー (_myPartial、モデル)。(モデルはリストです)。

Ajax.BeginForm

    @using (Ajax.BeginForm("Search",
                    new AjaxOptions
                    {
                        UpdateTargetId = "table-container",
                        InsertionMode = System.Web.Mvc.Ajax.InsertionMode.Replace,
                        HttpMethod = "POST"
                    }))
{   
    <input type="hidden" name = "hidden" id="hidden_amount" />
    <div id="slider-range">
    </div>
    <br />
    <button type="submit" value="Search">
        Search</button>
}

アクション方法

    [HttpPost]
    public PartialViewResult Search(string hidden)
    {
        List<Product> Model = null;
        string[] values = hidden.Split(' ');
        int[] convertedString = Array.ConvertAll<string, int>(values, int.Parse);
        string name = (string)TempData["searched"];
        try
        {
            Model = ResultDBController.GetAdvancedSearched(name, convertedString[0], convertedString[1]);
        }
        catch (Exception e)
        {
            ViewBag.Foutmelding = "Er is iets foutgegaan: " + e;
        }
        return PartialView("_Product", Model);
    }

UpdateTargetId は div "table-container" です

    @*Calls the _Product partial view*@
<div class="table-container">@Html.Partial("_Product", Model)</div>

その後、部分ビューを実行しますが、画面には表示されません..

部分図

    <table class="productlist">
@foreach (BlokCWebwinkelGroep3.Models.Product product in Model)
{ 
    <tr class="product" onclick="location.href = '@(Url.Action("ProductPage", "Product", new {ProductID = @product.ProductID}))'">

        <td>
            <img src = '@product.ImageURL' alt = '@product.Name' />
        </td>
        <td>
            @product.Name
        </td>
        <td>
            €@product.Price
        </td>
    </tr>
}

「er」を検索すると、画面に 3 つの製品が表示されます。2 つは < 75 ユーロ、もう 1 つは 183 ユーロです。スライダーを 75 ~ 300 に設定すると、デバッグしてすべて問題ないことを確認できます。actionmethod で返される部分ビューには 183 ユーロの製品のみが含まれ、部分ビューを 1 回ループしますが、部分ビューはそのバージョンに更新されず、3 つの製品と同じバージョンのままです。

ここで何が間違っていますか?

PSヘッダーで次のスクリプトを使用します

        <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script type="text/css" src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
4

1 に答える 1

2

MSDNのドキュメントには、UpdateTargetId は、現在行っているクラスではなく、DOM ID を更新すると記載されています。クラスを ID に変更すると、期待どおりに動作するはずです。

<div id="table-container"
于 2013-10-30T13:55:08.110 に答える