Подтвердить что ты не робот

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, чтобы поставить и перед второй переменной, которую я хочу отправить?

4b9b3361

Ответ 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(/&amp;/g, "&");