@ Url.Action添加"amp;" 在控制器中创建空值的参数之间?

Pom*_*ter 9 asp.net url asp.net-mvc url.action

我试图通过Url.Action发送多个参数.

$('#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");
           }
       }
   });
Run Code Online (Sandbox Code Playgroud)

在运行时,它看起来如下:

$(this).load("/APQuotes/LightStoneRequest?registrationNumber=TE5TGP&vinNumber=VINTEST44889856");
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

正如你所看到的,有一个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; }
    }
Run Code Online (Sandbox Code Playgroud)

如果我删除放大器; 它有效,但URL.Action添加了amp;.

Lua*_*aan 13

Url.Action 不是问题 - 这是你如何使用它.

您正在使用@- 这用于在(X)HTML页面中内联一段服务器端代码的结果.在(X)HTML页面中,实体必须正确编码,将您&变成一个&amp;.这是完全正确的行为 - 例如,它应该如何在文本或属性中内联(这就是你在例如中使用它的原因<a href="@...">).

但是,您尝试内联原始值而不是编码值 - 因为您没有尝试发出HTML,而是发出原始文本.Html.Raw这样做:

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