繁体   English   中英

MVC - 将整个模型作为参数传递给 javascript 中的 Url.Action

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM