Я хочу отправить переменные 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});
Однако отправляемый 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 ставить & перед второй переменной, которую я хочу отправить?
c#
javascript
jquery
url.action
Ник де Кляйн
источник
источник
&
это не нормально?Ответы:
Вчера я не заметил, что вы
&
думали, что редактор SO это изменил. Попробуйте обернутьUrl.Action()
себя@Html.Raw()
чтобы предотвратить кодирование &.Или, в качестве альтернативы, только
Url.Action()
бит контроллера / действия и передать два параметра в качестве данных публикации, а не напрямую по URL-адресу, jQuery должен отсортировать & для вас таким образом.источник
Я думаю, ваша проблема в
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);
источник