0

Action Method 的签名如下所示:

 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 }
        );          

并使用了两种版本的DwellingAdvertsByCity操作方法,一种用于 POST 请求,另一种用于 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 ...
    }

所以我可以在以下网址下看到预期的结果:

http://localhost:XXX/NewYork

希望可以节省您的时间,以防您遇到类似问题。

于 2013-01-24T16:36:09.500 回答