代码之家  ›  专栏  ›  技术社区  ›  jim tollan

jquery/view中的T4MVC url.action

  •  2
  • jim tollan  · 技术社区  · 14 年前

    这可能是可能的,也可能是不可能的(很可能在文档中,但我刚刚错过了)。

    如何使用T4MVC在视图中构造Url.Action(),这将允许我使用jQuery选择器。我一直在尝试(在javascript中)以下操作,但没有成功:

    function cancelHoldBooking() {
        var url = '<%= Url.Action(MVC.FundProperty.CancelLock($("#propertyid").val())) %>';
        // other code omitted for brevity
    }
    

    我能够成功地做到以下几点:

    function cancelHoldBooking() {
        var url = '<%= Url.Action("CancelLock", "FundProperty") %>';
        url += "?id=" + $("#propertyid").val();
        // other code omitted for brevity - in this case   
        // **I could of course have used the**:
        // var params = {id: $('#propertyid').val()};
        // **object**
    }
    

    我知道这将是一个“打瞌睡”的时刻,当答案到来,但对我的生命,我无法想出这一点!!

    干杯。。。

    2 回复  |  直到 14 年前
        1
  •  5
  •   David Ebbo    14 年前

    我想你是在试图混合客户端和服务器的代码,只是不能工作的方式。:)的<%=。。。%>block是纯服务器端代码,因此不能使用JQuery选择器。使用T4MVC所能做的最好的事情可能是:

    function cancelHoldBooking() {
        var url = '<%= Url.Action(MVC.FundProperty.CancelLock()) %>';
        url += "?id=" + $("#propertyid").val();
    }
    

    它仍然从操作和控制器名称的文本字符串中保存您,但不会帮助您处理参数。

        2
  •  3
  •   sheikhomar    14 年前

    你必须意识到 <%= ... %> 在服务器上处理 $("#propertyid").val() 在客户端上运行时 cancelHoldBooking 被称为。

    解决问题的一个方法是:

    function cancelHoldBooking() {
        var url = '<%= Url.Action(MVC.FundProperty.CancelLock(999)) %>'; // Provide a magic number
        url += url.replace('999', $("#propertyid").val());  // Replace the magic number
        // other code omitted for brevity - in this case i could 
        // of course have used the params {id: $('#propertyid').val()} object
    }