我正在尝试重构我的一些代码,我想知道它是否可能是这样的:
这是我的cshtml的一部分:
<a href="@Url.Action("Vote", "Ideas", new { id = item.Idea.Id, pageMetadata = Model.PageMetadata, numberOfVotes = 2 })">
这是调用动作:
public ActionResult Vote(string id,PageMetadata pageMetadata, int numberOfVotes = 1)
PageMetadata
是我的班级。
当我在cshtml网站pageMetadata
中进行重新分配时是正确的,但当动作调用pageMetadata
时,它将变为null
。我有些愚蠢的错误或者所有想法都错了吗?
谢谢你的帮助。
答案 0 :(得分:6)
查询字符串就像字典:{key,value}对。因此,您无法在查询字符串中传递类对象。
但是,你可以做的是传递你的模型对象的id,然后使用该id在服务器上加载你的对象。
现在,你正在做一个错误的想法! : - )
答案 1 :(得分:1)
另一个选项是序列化/反序列化对象,例如:
<a href="@Url.Action("Vote", "Ideas", new { id = item.Idea.Id, pageMetadata = JsonConvert.SerializeObject(Model.PageMetadata), numberOfVotes = 2 })">
在控制器中:
public ActionResult Vote(string id,string pageMetadata, int numberOfVotes = 1)
var pageMetadataObj = JsonConvert.DeserializeObject<PageMetadata>(pageMetadata)
注意:这会将您的对象属性公开给浏览器,并且可能会根据对象的数量和类型为网页添加大量内容。
答案 2 :(得分:1)