我有一个淘汰的Observable,它在与我的页面进行一些交互时填充。该Observable是逗号分隔值(即“a,b,c”)。我现在需要的是将此作为参数传递给@ Url.Action。见下文:
<input type="button" onclick="window.location.href='@Url.Action("Benefits", "Employee", new { ids = "a,b,c" })';" />
我该怎么做?
答案 0 :(得分:2)
您需要将您的网址构建为查询字符串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>
答案 1 :(得分: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>
答案 2 :(得分:0)
您可以使用替换的实际值提前设置url,这有点hacky,但由于MVC代码在服务器上执行,因此任何MVC代码都需要至少往返服务器重装。
urls = {
EmployeeBenefits: '@Url.Action("Benefits", "Employee", new {ids="==ids=="})'
};
window.location.href = urls.EmployeeBenefits.replace('==ids==', "a,b,c");
我考虑过写一个MVC动作,它会返回javascript,创建一个Url
对象,该网站的路由可以像这样使用,但在我开始使用之前就开始使用其他方式。