2015-11-02 1 views
5

Я пытаюсь отправить через несколько параметров через Url.Action.@ Url.Action добавляет "amp;" между параметрами, создающими нули в контроллере?

$('#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 номер прошел, но нуль в мой контроллер.

Вот мой модаль.

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; } 
    } 

если я удалю усилитель; он работает, но URL.Action добавляет усилитель.

+0

Этот код должен работать нормально. Вы уверены, что видите странное поведение с тем же кодом? – Shyju

+0

@Shyju ничего не изменил, скопируйте в область вопросов и снимок экрана для доказательства. – Pomster

+1

Ответ Luaan дал вам работать. – Shyju

ответ

6

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

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

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

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

Ницца, спасибо – Mahmoud