簡體   English   中英

Url.Action在我的網址中添加了&,如何解決此問題?

[英]Url.Action puts an & in my url, how can I solve this?

我想將變量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將&放在要發送的第二個變量前面?

昨天我沒有注意到您有& 我以為那是SO編輯器改變了這一點。 嘗試將Url.Action()包裝在@Html.Raw()以防止&編碼。

或者,也可以僅使用Url.Action()控制器/操作位並將這兩個參數作為發布數據而不是直接傳遞到url上,jQuery應該以此方式為您整理&。

我認為您的問題出在Model.meta.PostAction該屬性是string嗎?

如果是這樣,那么我的猜測是您正在使用以下任一方法將其添加到頁面中:

  • 剃刀: @Model.meta.PostAction
  • ASP視圖引擎: <%:Model.meta.PostAction%>

兩者都會自動為您編碼該字符串。

要解決此問題,請使用@Html.Raw() / <%= (兩者均不進行編碼),或將PostAction屬性IHtmlString為知道已被編碼的IHtmlString

string actionUrl = Url.Action("CreateNote", new { cmd = "Save", itemId = itemId, modelEntity = modelEntity});
Model.meta.PostAction = new HtmlString(actionUrl);

在您的JS上嘗試

myUrl = myUrl.replace(/&amp;/g, "&");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM