Can I pass the entire model as a parameter to Url.Action orsimilar?
Actually, I pass a parameter to the controller and I load the model, but I would like to pass ent
Can you. Yes.
You can pass a simple model containing only properties which are values types or string
using the overload that accepts object
as the 3rd parameter
@Url.Action("Search", "Search", Model)
Would you want to? No.
Internally the method will create a Dictionary
based on each properties name and .ToString()
value and convert that to a query string. Not only will the resulting url be ugly, if you have a lot of properties, or the values of the properties contain long strings, you could exceed the query string limit and throw an exception. But the main issue is that any properties which are complex objects or collections will cause binding to fail because, for example, a property which is List<string>
will generate ..?somePropertyName=System.Collections.Generic.List[string]&....
Pass just the model's ID
as your doing now, and get the model again from the repository in your controller.
You can try passing a ViewBag instead:
Url.Action("Search", "Song", new { songId = ViewBag.SongId, songName = ViewBag.SongName})
Controller:
[HttpGet]
public PartialViewResult Search(String songId, String songName)
{