【问题标题】:Razor mvc3 + jquery + UrlAction + PartialViewsRazor mvc3 + jquery + Url Action + 部分视图
【发布时间】:2011-02-23 16:45:48
【问题描述】:

我有一个关于 jQuery + Razor 的问题。我想使用带有 @Url.Action 的 razor 构建一个 javascript 变量,并且 html 属性将是输入的值。 像这样:

var d1 = $('#d1').val();
var d2 = $('#d2').val();
var url = "@Url.Action("Links", "PartialAccount", new { beginDate = "d1", endDate = "d2" })"
$("#links").fadeOut("slow").load(url).fadeIn("slow");

我该怎么做?

是不是和下面一样?
var url = "/PartialAccount/Links/?beginDate=" + d1 + "&endDate=" + d2;

【问题讨论】:

    标签: jquery asp.net-mvc-3 razor


    【解决方案1】:

    您应该使用 InfernalBadger 提出的load 方法:

    load('@Url.Action("Links", "PartialAccount")', { beginDate: d1, endDate: d2})
    

    因为这将正确编码d1d2 中的参数。但前提是您可以将参数作为查询字符串的一部分传递,而不是当它们应该是 url 本身的一部分时。

    所以你可以使用如果你想你的网址是:

     /bar/foo?beginDate=1-1-2001&endDate=2-2-2001
    

    (注意日期中的/会被编码)

    如果你希望你的网址是,你不能使用它:

    /bar/foo/1-1-2001/2-2-2001
    

    带有 beginDate 和 endData 参数的 @Url 方法不起作用,因为这是在服务器上执行的,在页面发送到浏览器之前。

    而您使用+ 运算符的方法失败,用户在输入框中输入“特殊字符”(如破折号/)。

    【讨论】:

      【解决方案2】:

      如果你想从 dom 元素中获取值,我会通过 load() 的 data 参数传递这两个值吗?

      $("#links").fadeOut("slow").load(url, { beginDate: d1, endDate: d2}).fadeIn("slow");
      

      【讨论】:

        猜你喜欢
        • 2012-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-11
        • 1970-01-01
        • 1970-01-01
        • 2012-01-09
        • 1970-01-01
        相关资源
        最近更新 更多