1

良い時間!入力 URL ブラウザーでのルートの表示に問題がありました。サイト内の検索ページへ。検索自体は正常に機能しています。「キー」が渡され、見つかったリストが表示されます。コントローラーの検索メソッドは、検索対象の文字列型の引数を取ります。

public ActionResult SearchAllByKey(string key)
        {
            //logic
            return View(<list_of_found>);
        }  

Global.asax で指定されたルート:

routes.MapRoute(
                  "Search",
                  "Search/{key}", 
                  new { controller = "controller_name", action = "SearchAllByKey", key = UrlParameter.Optional } 
              );

Edit の値を View からメソッドに送信するフォーム:

<% using (Html.BeginForm("SearchAllByKey", "controller_name", FormMethod.Post, new { enctype = "multipart/form-data" }))
                           {%>
                        <%: Html.ValidationSummary(true) %>
                        <input type="text" id="keyValue" name="key" />
                        <input type="submit" value="Go!" />
                        <% } %>

「Go!」をクリックすると。検索結果のページに移動しますが、URL (入力行ブラウザー) には次のように表示されます。

http://localhost:PORT/Search

それ以外の:

http://localhost:PORT/Search/SOME_KEY

URL-e に「キー」が表示されていることを確認するにはどうすればよいですか? 前もって感謝します

4

1 に答える 1

1

データを投稿しています。

FORM を変更してFormMethod.Get、アクションが get のみを受け入れるようにします (ただし、これがデフォルトです)。

    [HttpGet]
    public ActionResult SearchAllByKey(string key)
    {
        //logic
        return View(new List<string>());
    }  

更新

必要なものを実現するには、デフォルトの前に ruote を構成する必要があります。

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
          "Search",
          "{controller}/SearchAllByKey/{key}",
          new { controller = "Home", action = "SearchAllByKey", key = UrlParameter.Optional }
      );

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

FORMはのようになります。

<% using (Html.BeginForm("Search", "Home", FormMethod.Post))
{%>
    <% Html.ValidationSummary(true); %>
    <input type="text" id="key" name="key" value="" />
    <input type="submit" value="Go!" />
<% } %>

ActionResultを次のように変更する必要があります。

[HttpGet]
public ActionResult SearchAllByKey(string key)
{
    //logic
    return View(new List<string>());
}

[HttpPost]
public ActionResult Search(FormCollection form)
{
    return RedirectToAction("SearchAllByKey",  new { key = form["key"] });
}

基本的に、FORMSearchはにリダイレクトするアクションに投稿しますSearchAllByKey

于 2013-01-07T18:36:24.047 に答える