Url.Action将& 在我的url,我该如何解决这个问题?
我想发送variablesitemId和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});
但是,正在发送的url是
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把&放在我想发送的第二个variables的前面?
我昨天没有注意到你有&
我以为是SO编辑改变了这个。 尝试在@Html.Raw()
包装你的Url.Action()
以防止&的编码。
或者,也可能只有Url.Action()
控制器/动作位,并传递两个参数作为发布数据,而不是直接在URL上,jQuery应该为你解决这个问题。
我认为你的问题是与Model.meta.PostAction
– 是一个string
属性?
如果是这样,那么我的猜测就是你将它添加到页面中:
- 剃刀:
@Model.meta.PostAction
- ASP视图引擎:
<%:Model.meta.PostAction%>
两者都会自动为您编码该string。
要解决这个问题,可以使用@Html.Raw()
/ <%=
(两者都不编码),或者让PostAction
属性成为一个IHtmlString
,它知道它已经被编码了:
string actionUrl = Url.Action("CreateNote", new { cmd = "Save", itemId = itemId, modelEntity = modelEntity}); Model.meta.PostAction = new HtmlString(actionUrl);
尝试一下你的JS
myUrl = myUrl.replace(/&/g, "&");