Как передать несколько параметров в Url.Action()

Я хочу передать несколько параметров из Url.Action, вот код в поле зрения

 window.location.href = "@Url.Action("ABC", "XYZ", new { @A= ViewBag.A , @B =  ViewBag.B })";

И это мой метод в контроллере XYZ

 public ActionResult ABC(string A, string B)
 {
    // Some Code
 }

Я всегда получаю значения только в первом параметре, а второй всегда равен нулю. Либо, если сначала я но B. 2-й всегда нулевой. VIEW в основном находится под функцией JavaScript. Вот URL: http://localhost/CargoMainSite/XYZ/ABC?A=1&B=2 Обратите внимание, что между первым и вторым параметром есть дополнительный текст, то есть "amp;" если я явно удалю его. Он отлично работает и получает правильные значения.


person Affan Shahab    schedule 13.04.2015    source источник
comment
Спасибо @Lalit Kumar за редактирование.   -  person Affan Shahab    schedule 13.04.2015
comment
Зачем использовать сообщение, если вы указываете оба параметра в URL-адресе?   -  person gog    schedule 13.04.2015
comment
Оставим это. Что, если это не POST?   -  person Affan Shahab    schedule 13.04.2015
comment
@ggui Я только что отредактировал свой вопрос   -  person Affan Shahab    schedule 13.04.2015
comment
я не знаю вашего сценария, но на самом деле я не думаю, что это лучший способ выполнить действие с параметрами, я имею в виду, используя свойство location.href. Можете ли вы вместо этого использовать метод получения ajax?   -  person gog    schedule 13.04.2015
comment
@ggui Пожалуйста, укажите, как я могу его использовать?   -  person Affan Shahab    schedule 13.04.2015


Ответы (1)


Причина, по которой Url.Action не работает, заключается в том, что & char в URL-адресе закодирован, поэтому вы должны использовать @Html.Raw, как показано ниже.

 window.location.href = "@Html.Raw(@Url.Action("ABC", "XYZ", new { @A= ViewBag.A , @B =  ViewBag.B }))";
person Abbas Galiyakotwala    schedule 13.04.2015
comment
Спасибо @Abbas galiyakot, это действительно сработало отлично. Но у меня есть вопрос. Пожалуйста, дайте мне знать, возникнут ли какие-либо проблемы с использованием @Html.Raw(), например, с кросс-скриптами? спам и тд? - person Affan Shahab; 13.04.2015
comment
риск заключается в том, как он используется. Если вы отображаете введенную пользователем информацию, лучше использовать @Html.Encode(). Другими словами, если вы отображаете непользовательские вводимые данные, вы можете безопасно использовать @Html.Raw() - person Abbas Galiyakotwala; 13.04.2015
comment
Это сработало для меня --› window.location.href = @Html.Raw(@Url.Action(ABC, XYZ, new {A= ViewBag.A, B = ViewBag.B})); - person sunnysidedown916; 08.04.2016