Je veux envoyer les variables itemId et entityModel à ActionResult CreateNote:
public ActionResult CreateNote(
[ModelBinder(typeof(Models.JsonModelBinder))]
NoteModel Model, string cmd, long? itemId, string modelEntity)
avec ce javascript:
Model.meta.PostAction = Url.Action("CreateNote", new { cmd = "Save", itemId = itemId, modelEntity = modelEntity});
Cependant, l'URL envoyée est
localhost:1304/Administration/blue/en-gb/Entity/CreateNote?modelEntity=Phrase&itemId=44
Je veux envoyer
localhost:1304/Administration/blue/en-gb/Entity/CreateNote?modelEntity=Phrase&itemId=44
Comment puis-je empêcher Url.Action de placer le & devant la deuxième variable que je veux envoyer?
Je n'ai pas remarqué hier que vous aviez &
Je pensais que c'était l'éditeur SO qui avait changé cela. Essayez de mettre votre Url.Action()
dans une fonction @Html.Raw()
pour empêcher l'encodage de &.
Ou alternativement seulement Url.Action()
le bit contrôleur/action et passez les deux paramètres en tant que données de publication plutôt que directement sur l'URL, jQuery devrait trier les & pour vous de cette façon.
Je pense que votre problème est avec Model.meta.PostAction
- cette propriété est-elle un string
?
Si oui, alors je suppose que vous l'ajoutez à la page avec:
@Model.meta.PostAction
<%:Model.meta.PostAction%>
Les deux codent automatiquement cette chaîne pour vous.
Pour le corriger, utilisez @Html.Raw()
/<%=
(Les deux ne codent pas) ou faites de la propriété PostAction
une IHtmlString
qui sait qu'elle est déjà été codé:
string actionUrl = Url.Action("CreateNote", new { cmd = "Save", itemId = itemId, modelEntity = modelEntity});
Model.meta.PostAction = new HtmlString(actionUrl);