0

さまざまなモデルを取り、ホームページに概要ビューを表示する HomePageViewModel があります。

順序付けられていないリストとしてレンダリングしているドロップダウン リストの結果に基づいて、Announcements モデルをフィルター処理したいと思います。部分ビューなどを使用するのはこれが初めてで、読んだ後、Announcement Controller から DisplayAnnouncements を呼び出す HTML.Action 呼び出しを行うことにしました。

ただし、リストでクリックされたもののパラメーター (以下の例の「#」) を HTML.Action メソッドに渡す方法がわかりません。

これはホームページ ビューです。

<ul class="dropdown-menu">
    <li><a href="#">All</a></li>
    <li><a href="#">Legal</a></li>
    <li><a href="#">Accounting</a></li>
</ul>
@Html.Action("DisplayAnnouncments", "Announcement", new { filter = "All" })

そして、これは私のアナウンスコントローラーです:

    public ActionResult DisplayAnnouncments(string filter)
    {

        return PartialView("_Announcements", 
            (from a in db.Announcements
             where a.Type == filter
             select a).Take(4));
    }

私の _Annoucments 部分ビュー:

<table class="table" style="table-layout: fixed">

@foreach (var item in Model)
{
    <tr>
        <td style="vertical-align: top; width: 70px">
            @item.AnnouncmentDate.ToShortDateString()
        </td>
        <td>
            <strong>@item.Title</strong><br />
            @item.Announcment
        </td>
    </tr>
}

繰り返しになりますが、いくつか質問があります。

  1. HTML.Action に適切なフィルターを設定するためにユーザーがクリックしたリスト項目を取得するにはどうすればよいですか?
  2. HTML.Action はここで最高のものですか? 他のものを使用する必要がありますか?
  3. ページ全体が更新されないように部分ビューのみを更新するにはどうすればよいですか?

あなたの助けをありがとう、私はこれにかなり慣れていません!

ロビー

4

1 に答える 1

0

最も簡単な方法は、javascript を使用してドロップダウンで選択した値を部分ビューの非表示フィールド内にコピーし、部分ビュー (非表示) 送信ボタンのクリックをシミュレートすることです。

部分図:

<table class="table" style="table-layout: fixed">

<input type="hidden" id="MyHiddenInput" name="selectedValue" />
@foreach (var item in Model)
{
    <tr>
        <td style="vertical-align: top; width: 70px">
            @item.AnnouncmentDate.ToShortDateString()
        </td>
        <td>
            <strong>@item.Title</strong><br />
            @item.Announcment
        </td>
    </tr>
}
<div style="display: none;"><input type="submit" id="myHiddenButton" /></div>

親ビュー:

<ul class="dropdown-menu">
    <li><a href="#" data-hval="all">All</a></li>
    <li><a href="#" data-hval="legal">Legal</a></li>
    <li><a href="#" data-hval="accounting">Accounting</a></li>
</ul>

そしていくつかのjQuery:

$("dropdown-menu > LI > A").live("click", function() {
    $("#MyHiddenInput").val($(this).data("hval"));
    $("#myHiddenButton").click();
});
于 2013-06-10T11:58:57.723 に答える