values tag pass parametro parameter funciona con como c# javascript jquery url.action

c# - tag - Url.Action coloca un & amp; en mi url, ¿cómo puedo resolver esto?



url action send values (3)

Deseo enviar las variables itemId y entityModel a ActionResult CreateNote:

public ActionResult CreateNote( [ModelBinder(typeof(Models.JsonModelBinder))] NoteModel Model, string cmd, long? itemId, string modelEntity)

con este javascript:

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

Sin embargo, la URL que se envía es

localhost:1304/Administration/blue/en-gb/Entity/CreateNote?modelEntity=Phrase&itemId=44

Quiero enviar

localhost:1304/Administration/blue/en-gb/Entity/CreateNote?modelEntity=Phrase&itemId=44

¿Cómo puedo evitar que Url.Action coloque & en frente de la segunda variable que deseo enviar?


Creo que su problema es con Model.meta.PostAction - ¿esa propiedad es una string ?

Si es así, supongo que lo está agregando a la página con:

  • Razor: @Model.meta.PostAction
  • Motor de vista ASP: <%:Model.meta.PostAction%>

Ambos codifican automáticamente esa cadena por ti.

Para solucionarlo, utilice @Html.Raw() / <%= (ninguno de los cuales codifica) o establezca la propiedad IHtmlString en IHtmlString que sepa que ya se ha codificado:

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


No me di cuenta ayer de que tenías &amp; Pensé que ese era el editor de SO que había cambiado eso. Intente Url.Action() su Url.Action() en @Html.Raw() para evitar el Codificación de &.

O, alternativamente, solo Url.Action() el bit de controlador / acción y pasa los dos parámetros como datos de publicación en lugar de pasar directamente a la url, jQuery debe ordenar los & ''para usted de esa manera.


Prueba esto en tu JS

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