2014-11-05 63 views

回答

1

您可以使用点击绑定。

<button data-bind="click: function() { myFunction('@Url.Action("Benefits", "Employee")'); }"> 
    Click me 
</button> 

//then in your view model: 
self.myFunction = function (actionURL) { 
     window.location.href = (actionURL + '?ids=' + this.ids()); 
    }; 

或只是属性直接链接

<a data-bind="attr: { 'href': '@Url.Action("Benefits", "Employee")?ids=' + ids() }"> 
    Click 
</a> 
0

您可以提前设置网址,并用实际值代替,但这有点不好,但由于MVC代码是在服务器上执行的,所以任何MVC代码都需要至少往返一次服务器重新加载一些东西。

urls = { 
    EmployeeBenefits: '@Url.Action("Benefits", "Employee", new {ids="==ids=="})' 
}; 
window.location.href = urls.EmployeeBenefits.replace('==ids==', "a,b,c"); 

我想过写一个MVC行动,将返回的JavaScript创建与可用于就像这个站点的路由的Url对象,但使用其他方法之前,我有解决它开始。

2

,您将需要建立自己的URL作为查询字符串manualy

假设ids = ko.observable('a,b,c'); 那么你会建造你的网址

<input type="button" onclick="window.location.href='@(Url.Action("Benefits", "Employee"))' + '?ids=' + $data.ids()" /> 

,将产生类似http://localhost:5248/Employee/Benefits?ids=a,b,c

,或者尝试一个网址此

<button data-bind="click: function() { window.location.href='@(Url.Action("Benefits", "Employee"))' + '?ids=' + ids() }"> 
    Click me 
</button> 

JSFiddler DEMO

+1

我想这一点,但我不能访问IDS()上绑定 - 我创建了一个测试可观察的标识 - 但链接止跌点击时甚至不会到达该位置。 – 2014-11-05 00:44:11

+1

ids()必须与'$ data.ids()'或'$ parent.ids()'或'$ root.ids()'尝试使用相同的范围'尝试放置更多代码请 – Moes 2014-11-05 00:50:35

+0

Hi Moes ,我已经添加为样本的ids()是基于您的代码最上面的,我已将它更改为$ root.ids()。还尝试过$ root.ids,但仍然没有运气。 – 2014-11-05 00:56:03

相关问题