我可以将整个模型作为参数传递给Url.Action或类似的吗?
实际上我将参数传递给控制器并加载模型,但我会传递整个模型
window.location.replace('@Url.Action("Search", "Search", new { idSong = Model.IDSong })');
答案 0 :(得分:9)
您可以使用接受string
作为第3个参数的重载来传递仅包含值类型或object
的属性的简单模型
@Url.Action("Search", "Search", Model)
你想要吗?没有。
在内部,该方法将根据每个属性名称和Dictionary
值创建.ToString()
,并将其转换为查询字符串。结果url不仅难看,如果你有很多属性,或者属性的值包含长字符串,你可能会超出查询字符串限制并抛出异常。但主要问题是任何属于复杂对象或集合的属性都会导致绑定失败,例如,List<string>
的属性将生成..?somePropertyName=System.Collections.Generic.List[string]&....
立即传递模型的ID
,然后从控制器的存储库中再次获取模型。
答案 1 :(得分:0)
您可以尝试改为传递ViewBag:
Url.Action("Search", "Song", new { songId = ViewBag.SongId, songName = ViewBag.SongName})
控制器:
[HttpGet]
public PartialViewResult Search(String songId, String songName)
{