0

アクションメソッドのシグネチャは次のようになります。

 public ActionResult DwellingAdvertsByCity(
        string cityName,
        int numberOfResultsPerPage,
        int pageIndex)

私のRazorフォームは次のようになります。

 @using (Html.BeginForm(
    "DwellingAdvertsByCity", 
    "DwellingAdvert",
     new { controller = "DwellingAdvert", action = "DwellingAdvertsByCity" }, 
     FormMethod.Get
    ))
    {    
         @Html.DropDownList("CityName")

         <p>
             <input type="hidden" name="numberOfResultsPerPage" id="numberOfResultsPerPage" value="3" />
             <input type="hidden" name="pageIndex" id="pageIndex" value="1" />             
             <input type="submit" value="Submit" />
         </p>
    }

'NewYork'の選択を送信した後、次のURLの下に結果リストが表示されます。

http://localhost:XXX/DwellingAdvert/DwellingAdvertsByCity?CityName=NewYork&numberOfResultsPerPage=3&pageIndex=1

ルート構成を基本的なものから変更する方法についてのアイデア:

routes.MapRoute(null, "{controller}/{action}");

一致する必要があり、次のURLの下に結果リストが表示されます。

http://localhost:XXX/NewYork

私は数時間かけて理解しようとしましたが、結果はありませんでした。

問題に関する提案はありますか?

4

1 に答える 1

2

これに興味のある人のために、これが私が見つけて私のために働いた解決策です:

CityNameを含む次のルーティングパスをルート構成に追加しました。

routes.MapRoute(null,
        "{cityName}", // Matches /NewYork
        new { controller = "DwellingAdvert", action = "DwellingAdvertsByCity", pageIndex = 1, numberOfResultsPerPage = 3 }
        );          

2つのバージョンのDwellingAdvertsByCityアクションメソッドを使用しました。1つはPOSTリクエスト用で、もう1つはGETリクエスト用です。

    [HttpPost]
    [ActionName("DwellingAdvertsByCity")]
    public ActionResult DwellingAdvertsByCityPost(
        string cityName,
        int numberOfResultsPerPage,
        int pageIndex)
    {
        return Redirect(@"~\" + cityName);
    }

    [HttpGet]
    public ActionResult DwellingAdvertsByCity(
        string cityName,
        int numberOfResultsPerPage,
        int pageIndex)
    {
      ... actual code ...
    }

したがって、次のURLで期待どおりの結果を確認できます。

http://localhost:XXX/NewYork

同様の問題が発生した場合に備えて、時間を節約できることを願っています。

于 2013-01-24T16:36:09.500 に答える