Is there any way to pass a whole model via html.actionlink in ASP.NET MVC 3?

后端 未结 3 1095
别跟我提以往
别跟我提以往 2020-12-14 21:53

How do I pass a whole model via html.actionlink or using any other method except form submission? Is there any way or tips for it?

相关标签:
3条回答
  • 2020-12-14 22:07

    Though it's not advisable in complex cases, you can still do that!

    public class QueryViewModel
    {
      public string Search { get; set; }
      public string Category { get; set; }
      public int Page { get; set; }
    }
    
    // just for testing
    @{
       var queryViewModel = new QueryViewModel
       {
          Search = "routing",
          Category = "mvc",
          Page = 23
       };
    }
    
    @Html.ActionLink("Looking for something", "SearchAction", "SearchController"
                      queryViewModel, null);
    

    This will generate an action link with href like this,

    /SearchController/SearchAction?Search=routing&Category=mvc&Page=23

    Here will be your action,

    public ViewResult SearchAction(QueryViewModel query)
    {
       ...
    }
    
    0 讨论(0)
  • 2020-12-14 22:14

    No, you cannot pass entire complex objects with links or forms. You have a couple of possible approaches that you could take:

    • Include each individual property of the object as query string parameters (or input fields if you are using a form) so that the default model binder is able to reconstruct the object back in the controller action
    • Pass only an id as query string parameter (or input field if you are using a form) and have the controller action use this id to retrieve the actual object from some data store
    • Use session
    0 讨论(0)
  • 2020-12-14 22:20

    You could use javascript to detect a click on the link, serialize the form (or whatever data you want to pass) and append it to your request parameters. This should achieve what you're looking to achieve...

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