使用jQuery更改链接的路由值

时间:2014-11-17 10:36:38

标签: javascript jquery asp.net-mvc razor

我很感激任何帮助。

我每次尝试使用Kendo Grid href事件更改链接change()

 function ContractsGrid_onChange(e) {
    var selected = this.select()[0],
        item = this.dataItem(selected);       

    $('#createOnBase').attr('href', function () {

        var createLink = document.getElementById("createOnBase");
        var route = 'http://' + createLink.hostname + createLink.pathname + "?contractID =" + item.ID; 

        return route;

    });
  }

 @Ajax.ActionLink("Create", "CreateOnBase", 
                  new { contractID = "_contractID_" }, 
                  new AjaxOptions() {... }, 
                  new { id="createOnBase" })

我不确定当前的方法,因为我有不同的主机名(localhost与端口或服务器域)

最好的方法是:

var route = "@Url.Action('CreateOnBase', new { contractID = ??})";

但我不能在剃须刀中使用JS变量(item.ID)。

此外,this.href.replace("_contractID_", item.ID)无法进行多项更改。

你能帮我解决另一个问题吗?

非常感谢!

2 个答案:

答案 0 :(得分:1)

是的,这很容易,我找到了一种方法:

  $('#createOnBase').attr('href', function () {

        return "@Url.Action("CreateOnBase")"+ "/?contractID="  +item.ID;

    });

也许对某人有帮助。

答案 1 :(得分:1)

出现在我脑海中的第一个想法是将根网址存储在单独的变量中。这样的事情:

function ContractsGrid_onChange(e) {
    var selected = this.select()[0],
        item = this.dataItem(selected);       
    var rootUrl = @Url.Action("Create", "CreateOnBase");      
    $('#createOnBase').attr('href', function () {

        var createLink = document.getElementById("createOnBase");
        var route = rootUrl  + "?contractID =" + item.ID; 

        return route;

    });
  }

这只是一种解决方法,不确定某些高级方式......