0

私はこのような検索フォームを持っています:

<form action="@Url.Action("Search", "Items", null, null)" method="POST">
                    <input type="search" placeholder="Search" name="q" value="some search term">
                     <input type="hidden" name="city" value="london" />    
                </form>

Searchこれは" "アクションメソッドを呼び出します:

public ActionResult Search(string city, string q)
        {
            ...
            return View(model);
        }

ここで私は両方の値を受け取り、検索はうまくいきました。 しかし、私のブラウザのURLは次のとおりです。

http://localhost/mysite/item/Search?city=london

ご覧のとおり、URLに「q」パラメータがありません。
私はここで何を間違えましたか?

4

4 に答える 4

1

フォームメソッドはPOSTであるため、値はクエリ文字列を介して送信されません。POSTをGETに変更すると、それらが表示されます。

于 2012-11-21T18:21:50.103 に答える
1

タグを閉じてみてください<input ... />

<input type="text" placeholder="Search" name="q" value="some search term" />
于 2012-11-21T18:22:03.747 に答える
1

検索フィールドの入力タイプは、検索ではなくテキストである必要があります。

于 2012-11-21T18:07:34.973 に答える
0

私の例に従うことができます:

モデル:

public class SearchModel{
  public String City { get; set; }
  public String Q { get; set; }
}

意見:

@model SearchModel
@using (@Html.BeginForm("Search", "Items", FormMethod.Post, new {@id = "Form"})) {
   @Html.HiddenFor(m => m.City)
   @Html.HiddenFor(m => m.Q)
}

コントローラ:

[HttpGet]
public ActionResult Search(string city, string q)
{
  var model = new SearchModel {
       City = "london",
       Q = "some search term"
  };
  return View(model);
}

[HttpPost]
public ActionResult Search(SearchModel model)
{
  //.....
  return View(model);
}
于 2013-05-24T08:09:04.750 に答える