Url.Action处理空值或使用javascript客户端值

时间:2010-12-21 23:43:26

标签: asp.net-mvc-2

确定我原来的帖子:

Url.Action is throwing error CS1026: ) expected

得到了回答。但是我发现模型中我依赖的ID中的一个对象是null。我无法弄清楚如何重写它以使其工作。

var url = '<%= Url.Action(
               "List", 
               "PlacementAgreementAgencyPlacementAgreementsPlacement", 
               new { 
                   Domain = "Placement", 
                   Id = Model.Item.PlacementAgreement.PlacementAgreementId, 
                   agencyPlacementAgreementId = Model.Item.AgencyPlacementAgreementId, 
                   Page = Model.PageNo 
               }) %>';

我需要这样的东西(目前在字符文字中说太多字符,我认为可能与单/双引号有关。

var url = '<%= Url.Action(
                "List", 
                "PlacementAgreementAgencyPlacementAgreementsPlacement", 
                 new { 
                   Domain = "Placement", 
                   Id = ' + $("#PlacementAgreementId").val() +',   
                   agencyPlacementAgreementId = ViewData.Model.AgencyPlacementAgreement == null ? 0 : ViewData.Model.AgencyPlacementAgreement.AgencyPlacementAgreementId, 
                   Page = ViewData.Model.PageNo
                 }
            ) %>';

还尝试过:

var url = '<%= Url.Action(
                 "List", 
                 "PlacementAgreementAgencyPlacementAgreementsPlacement", 
                  new { 
                     Domain = "Placement", 
                     Id = %>' + $("#PlacementAgreementId").val() +'<%=,      
                     agencyPlacementAgreementId = ViewData.Model.AgencyPlacementAgreement == null ? 0 : ViewData.Model.AgencyPlacementAgreement.AgencyPlacementAgreementId, 
                     Page = ViewData.Model.PageNo}) %>';

但是javascript和url.action的混合只会让我感到困惑。我的问题是我的ViewData类中没有包含id的属性..但如果我在页面上查看源代码,我可以看到它存储在客户端。

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:0)

结束回到原来那里并传递看起来像旧学校查询字符串的参数。

var url = '<%= Url.Action("List") %>?page=' + pageNo + 
          '&agencyplacementagreementid=' + $("#AgencyPlacementAgreementId").val();

所以不确定我之前是否处于完全错误的轨道上并且你应该这样做 - 或者如果有一种方法可以像我原来那样做。但它现在正在运作! :)

答案 1 :(得分:0)

仁,

您正在将客户端Javascript与C#服务器端混合,而不是很好的混合!

我看到你这样做的唯一方法是放置一个占位符,然后在Javascript中进行替换,例如:

var url = '<%= Url.Action(
             "List", 
             "PlacementAgreementAgencyPlacementAgreementsPlacement", 
              new { 
                 Domain = "Placement", 
                 Id = 9999,      
                 agencyPlacementAgreementId = ViewData.Model.AgencyPlacementAgreement == null ? 0 : ViewData.Model.AgencyPlacementAgreement.AgencyPlacementAgreementId, 
                 Page = ViewData.Model.PageNo}) %>';

然后执行replace in Javascript

var realUrl = url.replace('9999', $("#PlacementAgreementId").val());