2

申し訳ありませんが、私は C# と ASP.NET を初めて使用し、この問題に関する多くの投稿を見ましたが、まったく理解できませんでした。HTML.ActionLinkを介してGETパラメーターをアクションに渡す方法を理解しようとしています:

ここにURLがあります:

http://localhost:36896/Movies/SearchIndex?searchString=the

CSHTML ページは次のようになります。

<input type="Text" id="searchString" name="searchString" />
@Html.ActionLink("Search Existing", "SearchIndex", new { searchString = "the"}) 

このハードコードされたパラメーター「the」は実際に機能していますが、id=searchString で入力要素を選択するにはどうすればよいですか?document.getElementById("searchString").value

ありがとう、

4

2 に答える 2

3

GET パラメーターとして送信する値がサーバーで不明な場合、Html.ActionLink ヘルパーを使用して追加することはできません。既存のリンクを操作してパラメーターを追加するには、javascript を使用する必要があります。

検索文字列を含む入力フィールドがあり、このフィールドに入力された値をサーバーに送信したいと考えています。このシナリオを処理するより良い方法は、ActionLink の代わりに method="GET" を含む HTML フォームを使用することです。この方法では、javascript を使用する必要はありません。これは HTML 仕様の一部です。

@using (Html.BeginForm("SearchIndex", "Movies", FormMethod.Get))
{
    @Html.EditorFor(x => x.SearchString)
    <button type="submit">Search</button>
}

ボタンをクリックするSearchと、フィールドに入力された値SearchStringが自動的にSearchIndexアクションに送信されます。

http://localhost:36896/Movies/SearchIndex?searchString=the

しかし、絶対に ActionLink の使用を主張する場合は、URL に値を追加するために、このリンクがクリックされたときに既存のリンクの href を操作する JavaScript を作成する必要があります。ただし、HTML 仕様では既に HTML フォーム全体でこの機能が提供されているため、これはお勧めしません。

于 2012-11-22T07:34:07.127 に答える
0

これにより、@ Html.EditorForがオブジェクトのTitleフィールドを参照するようになります。ランダムな方法ですが、機能します。

@using (Html.BeginForm ("SearchIndex", "Movies", FormMethod.Get))
{
    @Html.EditorFor( x => x.ElementAt(0).Title)
    <button type="submit">Search</button>
}

それでも、GETのURLに入力パラメーターを渡すことができませんでした。

編集

最終的な解決策

@Html.TextBox("SearchString")
    <button type="submit">Filter</button>

コントローラ側で入力パラメータを切り替えます。基本的に、渡されたパラメータを自動的に認識します。

public ActionResult SearchIndex(string searchString)
        {
           ...
        }
于 2012-11-25T10:01:08.167 に答える