@URL-адрес.Действие добавление "amp;" между параметрами, создающими нули в контроллере?

Я пытаюсь отправить через несколько параметров через URL.Действие.

$('#dialog').dialog({
   autoOpen: false,
   width: 850,
   height: 420,
   resizable: false,
   title: 'Vehicle details',
   modal: true,
   open: function (event, ui) {
   $(this).load("@Url.Action("LightStoneRequest", new { registrationNumber = Model.VehicleRegistration, vinNumber = Model.vVinNumber })");
   },
      buttons: {
          "Close": function () {
               $(this).dialog("close");
           }
       }
   });

во время выполнения выглядит следующим образом:

$(this).load("/APQuotes/LightStoneRequest?registrationNumber=TE5TGP&vinNumber=VINTEST44889856");

enter image description here

как вы можете видеть, есть номер vin, пройденный через, Но его null в моем контроллере.

вот мой модала.

public partial class LightStoneRequest
    {
        public LightStoneRequest()
        {
            this.LightStoneDataFields = new HashSet<LightStoneDataField>();
        }

        public int LightStoneRequestId { get; set; }
        public string RegistrationNumber { get; set; }
        public string VinNumber { get; set; }

        public virtual ICollection<LightStoneDataField> LightStoneDataFields { get; set; }
    }

Если я удалю amp; он работает, но URL.Действие добавляет amp;.

1 ответов


Url.Action не проблема - это как вы его используете.

вы используете @ - используется для вставки результатов фрагмента кода на стороне сервера на (X)HTML-странице. На (X)HTML-странице сущности должны быть правильно закодированы, повернув & на &amp;. Это точное правильное поведение - вот как оно должно быть встроено в текст или атрибут, например (именно поэтому вы используете его, например,<a href="@...">).

однако вы пытаетесь встроить необработанное значение, а не закодированное значение - поскольку вы не пытаетесь испустить HTML, вы испускаете необработанный текст. Html.Raw делает именно это:

@Html.Raw(Url.Action("Test", new { arg1 = "Hi!", arg2 = "there." }))