Asp.net mvc 4 具有Knockoutjs模板项属性的RouteLink
我有一个模板通过Asp.net mvc 4 具有Knockoutjs模板项属性的RouteLink,asp.net-mvc-4,knockout.js,Asp.net Mvc 4,Knockout.js,我有一个模板通过foreach:viewModel.foos呈现另一个模板。在这个模板上,我想做如下操作:@Html.RouteLink(“视图”,“Foo”,new{id=fooId,text=fooName})。作为视图模型的fooId和fooName属性。这并不能回答这个问题,但我将把它保留在这里,因为它显示了如何为更像SPA的方法实现它。 如果您希望将导航移动到客户端,请查看Durandal或我的轻型SPA引擎 问题更新前的旧答案 您必须从模型中执行此操作(这是一件好事,因为不应在视图
foreach:viewModel.foos
呈现另一个模板。在这个模板上,我想做如下操作:@Html.RouteLink(“视图”,“Foo”,new{id=fooId,text=fooName})
。作为视图模型的fooId
和fooName
属性。这并不能回答这个问题,但我将把它保留在这里,因为它显示了如何为更像SPA的方法实现它。
如果您希望将导航移动到客户端,请查看Durandal或我的轻型SPA引擎
问题更新前的旧答案
您必须从模型中执行此操作(这是一件好事,因为不应在视图中执行此操作)
让子视图模型将参数作为构造函数参数
MyViewModel = function() {
this.subView = ko.observable();
};
MyViewModel.prototype = {
loadSubView: function() {
this.subView(new SubViewModel(this.params));
}
};
编辑:提示测试此库的模板设置
我已将此添加到我的模板中:
<a data-bind="attr: { href: Url }">View</a>
缺点:
- 痛苦的可伸缩性
- 简单
@Html.RouteLink
与客户端KO视图模型属性相结合,那么您的答案是如何解决这一问题的呢?他想要一个淘汰的等价物,如果不是,问题需要更清楚这个答案很有趣@Anders,但Esteban如何使用本质上是动态的URL?我认为KO中有类似于computed
的东西。他能用这个吗?也许你可以改变你的答案,并反思一下,以获得更好的答案。这样做行不通,记住KO用于客户端绑定,RouteLink是在服务器端运行的html助手。一件好事,如果不是最好的,你可以做的是将url分配给一个js变量,然后使用分配给vaiable.+1的url在KO中构建并绑定你的链接(标签),让我意识到我需要咖啡。我想我明白了,我会用原始的、不友好的、临时的解决方案更新我的问题。如果你的编辑解决了你的问题,那么你应该做出回答并接受它(当然,几天后)。通过这种方式,其他人可以看到它是如何解决您的问题的,并且在将来可能会帮助他们。如果您问我,将导航移到客户端是最好的方法,KO、durandal有很多SPA引擎etc@vonv. 这是我的意图编辑这作为一个临时修复,如果我不能得到一个更好的方法,我会在几天内编辑作为一个答案,所以它可能会帮助其他人。
public class Foo : FooBase {
public long FooId { get; set; }
public string FooName { get; set; }
public string Url {
get {
return string.Format("/foo/{0}/{1}", FooId, FooName
}
}
}