2011-04-29 129 views
0

附加我坚持使用方案,如以下几点:大厦HTML和使用jQuery

$(document).ready(function() { 
     var param1 = "A"; 
     var param2 = "B"; 
     var param3 = "C"; 
     $("ul#SomeUL").append('<li><%: Ajax.ActionLink("Click Me", "SomeAction", new { param1 = "' + param1 + '", param2 = "' + param2 + '", param3 = "' + param3 + '" }, new AjaxOptions() { OnSuccess = "onSuccess" }, new { Class = "ABC" }) %></li>'); 

现在的问题是,不是每个帕拉姆#变量的值被“插入” .. 。变量名本身(例如param1)被“插入”......换句话说,发布到控制器动作的routeValues是param1,param2和param3而不是A,B和C ......没有人知道为什么会这样正在发生,以及如何解决它?

谢谢D

回答

1

在这种情况下,ActionLinks是无用的,因为它们是服务器端代码。您不能将它们与客户端JavaScript变量混合使用。下面是我如何做到这一点(包括jQuery的全部功能):

$(function() { 
    var param1 = 'A'; 
    var param2 = 'B'; 
    var param3 = 'C'; 
    $('ul#SomeUL').append(
     $('<li/>', { 
      html: $('<a/>', { 
       href: '<%= Url.Action("SomeAction") %>', 
       text: 'Click Me', 
       class: 'abc', 
       click: function() { 
        var params = { 
         param1: param1, 
         param2: param2, 
         param3: param3 
        }; 
        $.get(this.href, params, function(result) { 
         onSuccess(); 
        }); 
        return false; 
       } 
      }) 
     }) 
    ); 
}); 
+0

好的......但是如果链接是一个必须点击的图像,上面的代码还能工作吗? (我写了一个名为ImageActionLink的扩展方法,但为了简单起见,我只是在上面的场景中使用了ActionLink。 – Dieter 2011-04-29 11:28:30

+0

@Dieter,你可以使用CSS类将一些背景图像应用于锚标签,或者不用锚简单地生成' 'tag。你可以在这个图片标签上使用一个HTML5'data- *'属性来存储URL'Url.Action' helper。 – 2011-04-29 11:29:26

+0

好的,谢谢:)我会试试... – Dieter 2011-04-29 11:50:54