How do I create the correct route values for this ActionLink?

后端 未结 5 1297
一整个雨季
一整个雨季 2021-02-18 21:48

The Model of SearchResults.aspx is an instance of PersonSearch; when the request for a new page arrive (a GET request), the action method should take i

相关标签:
5条回答
  • 2021-02-18 21:55

    If you are using Razor (I realize OP asked four years ago before Razor was invented, but people finding this maybe using it).

    I was able to get something working by using an inline @helper method.

    @helper RunnerLink(PersonSearch model, int page)
    {
        var routeParms =new RouteValueDictionary(model.GetType().GetProperties().ToDictionary(p => p.Name, p => p.GetValue(model, null)));
        routeParms.Add("page", page.ToString());
        routeParms.Add("Controller", "Property");
        @Html.ActionLink("Search", "Index", routeParms)
    }
    

    Usage would be simple --

    @RunnerLink(myPersonSearchInstance, 1)
    

    It isn't the most elegant solution, but it works well if you want to pass an object in as a routeValue, but you need to pass additional items, such as Controller, Area or in OPs case page.

    0 讨论(0)
  • 2021-02-18 22:11

    It think it would be better to create another object with the correct values, instead of using (and potentially altering the current routevalues):

    <%=Html.ActionLink("Next Page >", "SearchResults", new {
        search = this.Model,
        page = 1 //or whatever
    }) %>
    
    0 讨论(0)
  • 2021-02-18 22:19

    You need to override ToString().

    0 讨论(0)
  • 2021-02-18 22:21

    You need use RouteLink instead ActionLink. Your code should look something like this

    @Html.RouteLink("Next", new {controller = "SearchResults", action = "Index", search=samevalue, page=1 }) 
    
    0 讨论(0)
  • 2021-02-18 22:22

    This blog post by Scott Guthrie helped me wrap my head around URL Routing: ASP.NET MVC Framework (Part 2): URL Routing

    enter image description here enter image description here

    I love that he included test cases! enter image description here

    0 讨论(0)
提交回复
热议问题