[英]MVC - Pass entire model as parameter to Url.Action in javascript
我可以将整个模型作为参数传递给 Url.Action 或类似的吗?
实际上,我将参数传递给控制器并加载模型,但我想传递整个模型。
window.location.replace('@Url.Action("Search", "Search", new { idSong = Model.IDSong })');
你是否可以。 是的。
您可以使用接受object
作为第三个参数的重载传递一个仅包含值类型或string
属性的简单模型
@Url.Action("Search", "Search", Model)
你愿意吗? 不。
在内部,该方法将根据每个属性名称和.ToString()
值创建一个Dictionary
并将其转换为查询字符串。 不仅生成的 url 会很丑,如果你有很多属性,或者属性的值包含长字符串,你可能会超出查询字符串限制并抛出异常。 但主要问题是任何作为复杂对象或集合的属性都会导致绑定失败,因为例如List<string>
的属性将生成..?somePropertyName=System.Collections.Generic.List[string]&....
现在只传递模型的ID
,然后从控制器的存储库中再次获取模型。
您可以尝试传递一个 ViewBag:
Url.Action("Search", "Song", new { songId = ViewBag.SongId, songName = ViewBag.SongName})
控制器:
[HttpGet]
public PartialViewResult Search(string songId, string songName)
{
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.