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

3 69

3 ответа:

Я не заметила вчера, что у тебя & Я думал, что это так редактор изменил это. Попробуйте обернуть ваш Url.Action() на @Html.Raw() для предотвращения Кодирование от.

или только Url.Action() бит контроллера / действия и передать два параметра в качестве данных post, а не непосредственно на url, jQuery должен отсортировать &'s для вас таким образом.

Я думаю, что ваша проблема с Model.meta.PostAction - это свойство a string?

если так, то я предполагаю, что вы добавляете его на страницу с:

  • бритвы: @Model.meta.PostAction
  • ASP view engine:<%: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);

попробуйте это на вашем JS

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