Url.Action ставит и в моем URL-адресе, как я могу это решить?
Я хочу отправить переменные 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, чтобы поставить и перед второй переменной, которую я хочу отправить?
Ответы
Ответ 1
Вчера я не заметил, что у вас было &
Я думал, что редактор SO изменил это. Попробуйте обернуть ваш Url.Action()
в @Html.Raw()
, чтобы предотвратить кодирование &.
Или, альтернативно, только Url.Action()
бит контроллера/действия и передавать два параметра в виде пост-данных, а не непосредственно на URL-адрес, jQuery должен сортировать и для вас таким образом.
Ответ 2
Я думаю, что ваша проблема связана с Model.meta.PostAction
- это свойство a string
?
Если это так, я бы предположил, что вы добавляете его на страницу с помощью:
- Бритва:
@Model.meta.PostAction
- ASP view engine:
<%:Model.meta.PostAction%>
Оба из них автоматически кодируют эту строку для вас.
Чтобы исправить это, используйте @Html.Raw()
/<%=
(оба из которых не кодируют) или создайте свойство PostAction
a IHtmlString
, которое знает, что оно уже закодировано:
string actionUrl = Url.Action("CreateNote", new { cmd = "Save", itemId = itemId, modelEntity = modelEntity});
Model.meta.PostAction = new HtmlString(actionUrl);
Ответ 3
Попробуйте это на своем JS
myUrl = myUrl.replace(/&/g, "&");