我想将变量itemId和entityModel发送到ActionResult CreateNote:
public ActionResult CreateNote(
[ModelBinder(typeof(Models.JsonModelBinder))]
NoteModel Model, string cmd, long? itemId, string modelEntity)
使用此javascript:
Model.meta.PostAction = Url.Action("CreateNote", new { cmd = "Save", itemId = itemId, modelEntity = modelEntity});
但是,发送的网址是
localhost:1304/Administration/blue/en-gb/Entity/CreateNote?modelEntity=Phrase&itemId=44
我想发送
localhost:1304/Administration/blue/en-gb/Entity/CreateNote?modelEntity=Phrase&itemId=44
如何防止Url.Action放入&在我要发送的第二个变量前面?
答案 0 :(得分:117)
昨天我没有注意到你有&
我认为SO编辑改变了这一点。尝试将Url.Action()
包裹在@Html.Raw()
中以阻止编码&。
或者只有Url.Action()
控制器/动作位并将这两个参数作为发布数据而不是直接传递给url,jQuery应该以这种方式为你排序。
答案 1 :(得分:13)
我认为您的问题出在Model.meta.PostAction
- 该属性是string
吗?
如果是这样,那么我的猜测就是你将它添加到页面中:
@Model.meta.PostAction
<%:Model.meta.PostAction%>
两者都会自动为您编码该字符串。
要解决此问题,请使用@Html.Raw()
/ <%=
(两者都不编码)或将PostAction
属性设为IHtmlString
,知道它已被编码:
string actionUrl = Url.Action("CreateNote", new { cmd = "Save", itemId = itemId, modelEntity = modelEntity});
Model.meta.PostAction = new HtmlString(actionUrl);
答案 2 :(得分:-2)
在您的JS上试试
myUrl = myUrl.replace(/&/g, "&");