2015-11-02 47 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; } 
    } 

如果我刪除amp;它的工作原理,但URL.Action增加了amp ;.

+0

此代碼應該正常工作。你確定你看到一個具有完全相同代碼的奇怪行爲嗎? – Shyju

+0

@Shyju沒有改變任何東西,複製到問題區域和屏幕截圖作爲證據。 – Pomster

+1

Luaan給出的答案應該適合你。 – Shyju

回答

6

Url.Action不是問題 - 這是你如何使用它。

您正在使用@ - 這是用於在(X)HTML頁面中內聯一段服務器端代碼的結果。在(X)HTML頁面中,實體必須正確編碼,將&變成&amp;。這是完全正確的行爲 - 例如,它應該如何在文本或屬性中內聯(這就是您在例如<a href="@...">中使用它的原因)。

但是,您試圖內聯原始值而不是編碼值 - 因爲您不是試圖發佈HTML,而是發佈原始文本。 Html.Raw就是這樣做的:

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

不錯,謝謝 – Mahmoud

相關問題