带有Knockoutjs模板项属性的RouteLink

时间:2013-05-06 07:08:10

标签: asp.net-mvc-4 knockout.js

我有一个模板通过foreach: viewModel.foos呈现另一个模板。在这个模板上,我想做这样的事情:@Html.RouteLink("View", "Foo", new { id = fooId, text = fooName })。是视图模型的fooIdfooName属性。

2 个答案:

答案 0 :(得分:0)

我已将此添加到我的模板中:

<a data-bind="attr: { href: Url }">View</a>

这是我的Foo对象:

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
        }
    }
}

缺点:

  • 痛苦的可扩展。

专业人士:

  • 简单。

答案 1 :(得分:-1)

这不会回答问题,但我会将其保留在此处,因为它显示了如何为更多SPA这样的approuch做到这一点。

如果您希望将导航移至客户端,请查看Durandal或我的轻量级SPA引擎 https://github.com/AndersMalmgren/Knockout.Bootstrap.Demo

问题更新前的旧答案

你必须从你的模型中做到这一点(这是一件好事,因为它不应该在视图中完成)

让您的子视图模型将参数作为构造函数参数

MyViewModel = function() {
   this.subView = ko.observable();
};

MyViewModel.prototype = {
   loadSubView: function() {
      this.subView(new SubViewModel(this.params));
   }
};

编辑:提示测试此lib以进行模板化 http://jsfiddle.net/hwTup/