2

私は ASP.NET MVC にかなり慣れていませんが、まだいくつかの概念に慣れています。ビューのテキスト ボックスの値をコントローラーに戻すには、Html.BeginForm を使用して、テキスト ボックスにコントローラー アクションの対応するパラメーターと同じ名前を付けます。

これが私の状況です。2つのボタンがあります。コントローラーで同じアクションを呼び出すようにします。両方にテキスト ボックスの値 (つまり、「searchText」) を渡すようにします。ただし、ボタンの 1 つはパラメータ isQuickJump に「false」を渡し、もう 1 つのボタンはパラメータ isQuickJump に「true」を渡したいと考えています。

これが私の見解です:

@using (Html.BeginForm("SearchResults", "Search", FormMethod.Get))  {
<div id="logo" class="centered">
    <a href="SearchResults">
        <img alt="Search" src="../../Content/themes/base/images/Search.jpg" />
    </a>
</div>

<div id="searchBox" class="centered">
    @Html.TextBox("searchText", null, new { @class = "searchTextBox" })
</div>

<div id="buttons" class="centered">
    <input type="submit" id="searchButton" value="Search" class="inputBtn"  />
    @Html.ActionLink("Quick Jump", "SearchResults", "Search", new { isQuickJump = true }, new { @class = "btn" })
</div>

}

コントローラ:

public ActionResult SearchResults(string searchText, int? page, int? size, bool? isQuickJump, GridSortOptions sort)
    {
        var items = GetSearchGrid(searchText, page, size, sort);

        if (Request.IsAjaxRequest())
            return PartialView("_SearchResultsGrid", items);

        return View(items);
    }

これを行う方法に関する提案はありますか?

私はあなたの助けに感謝します!

4

1 に答える 1

4

同じ名前で値が異なる 2 つの送信ボタンを使用するだけです。

<div id="buttons" class="centered">
    <button type="submit" name="isQuickJump" value="false">Search</button>
    <button type="submit" name="isQuickJump" value="true">Quick Jump</button>
</div>

クリックされたボタンに応じて、対応する値がisQuickJumpパラメーターのサーバーに送信されます。どちらも送信ボタンであるため、他のすべての入力フィールドのデータもサーバーに送信します (2 番目のボタンとして使用したアンカーの場合はそうではありませんでした)。

于 2012-07-12T20:11:06.990 に答える