如何将正确的 Url.Action 传递给 JQuery 方法而没有额外的 & 号麻烦?

Posted

技术标签:

【中文标题】如何将正确的 Url.Action 传递给 JQuery 方法而没有额外的 & 号麻烦?【英文标题】:How do I pass correct Url.Action to a JQuery method without extra ampersand trouble? 【发布时间】:2011-11-12 06:52:01 【问题描述】:

我正在尝试像这样进行 ajax 调用:

$('#Grid').load('@Url.Action("_AgentStatesGrid", "AgentStates", new  projectId = Model.SelectedProject, siteId = Model.SelectedSite )', null, refreshComplete);

不幸的是,它被解释为:

$('#Grid').load('/AgentStates/_AgentStatesGrid?projectId=179&siteId=0', null, refreshComplete);

如您所见,&.a.m.p.;是否存在而不是查询字符串的&符号(我放了点,因为,呃,网络将其解释为&符号......,你明白了)

我尝试了 Url.Decode,但没有任何效果。我不确定我是否理解这个问题,所以我不知道如何解决它。

【问题讨论】:

试试@html.Raw(Url.Action("_AgentStatesGrid", "AgentStates", new projectId = Model.SelectedProject, siteId = Model.SelectedSite )) 史蒂夫做到了!让它成为一个答案,以便我可以勾选它:-) 【参考方案1】:

试试

 @Html.Raw(Url.Action("_AgentStatesGrid", "AgentStates", new  projectId = Model.SelectedProject, siteId = Model.SelectedSite )) 

谢谢

【讨论】:

我对这是必需的感到​​有些失望。我不禁认为 Url.Action 的通常用例是一个链接,因此(技术上)几乎在所有情况下都需要 Html.Raw (单个参数正常工作的情况更多是偶然而不是设计) .但我想人们自 2011 年以来一直在为此苦苦挣扎,所以现在改变主意了…… 不能再同意了。应该编码每个参数,而不是生成的 url。 我只是“失去”了一些宝贵的生命时间来调试这个可悲的错误。 ;) 救了我的培根,认真的谁编码了整个该死的东西,而不仅仅是参数。 错误,严重吗?在正确完成工作的情况下,这种用法又如何呢? onclick="location.href = '@Url.Action("UserClone", "Preview", new sourceId = 1, targetId = 2 )';"

以上是关于如何将正确的 Url.Action 传递给 JQuery 方法而没有额外的 & 号麻烦?的主要内容,如果未能解决你的问题,请参考以下文章

Url.Action:如何将参数从视图传递到控制器?

如何使用 POST 方法将 javascript/jQuery 变量传递给 PHP [重复]

如何在@Url.Action 中传递动态值?

如何在 Url.Action 中传递区域?

Select2 initSelection 元素 Val

使用 Url.action() 传递动态 javascript 值