如何使用knockout模板指定mvc3动作链接

时间:2012-10-11 01:24:53

标签: c# asp.net-mvc-3 knockout.js

我有一个淘汰模板(使用koExternaltemplateEngine_all.js),其中我想要一个指向控制器/动作的编辑链接。我非常喜欢淘汰赛在MVVM方面为我提供的东西,但不确定我是否试图通过在淘汰视图中指定动作链接来混合苹果和橙子。我想敲一下实现这个目标的最佳方法是什么?

提前致谢!

<p>
  <b><span data-bind='text: Title'></span></b>
  <span data-bind='text: ArticleDate'></span>
</p>
<span data-bind='text: BodyText'></span>

这样的东西
<a data-bind="attr: { 'href': '@Url.Action("Details" .. ?

模特

    public class SecureModel
    {
       public SecureModel()
       {

       }

       private List<Article> _articles;

       public List<Article> Announcements
       {
          get
          {
              return _articles;
          }
          set
          {
              _articles = value;
          }
       }
    }

查看

    @model UI.Models.SecureModel
    @{
      ViewBag.Title = "Announcements";
    }
    var viewModel = {

    isEditable: ko.observable(false),
    articles: ko.mapping.fromJS([]),
    loadInitialData: function () {
        ko.mapping.fromJS(serverData, dataMappingOptions, viewModel.articles);
    },
    loadUpdatedData: function () {
        ko.mapping.fromJS(serverData, dataMappingOptions, viewModel.articles);
    }
};

1 个答案:

答案 0 :(得分:0)

如果我正在阅读您的代码,那么您已经确定了Article,因为您的第一个KO数据绑定示例显示了Title,ArticleDate等....由于您不喜欢,这有点难以理解不显示Article对属性的含义......

如果是这种情况,您应该能够做到这样的事情:

<a data-bind="attr: { 'href': '@Url.Action("Details", "ControllerName", new {actionParameterName=ArticleModelKeyFieldName}">Details</a>

其中actionParameterName是您操作中参数的名称,ArticleModelKeyFieldName是文章模型中的关键字段。

所以如果你有这样的行动:

public ActionResult Details(int articleId)
{
....
}

然后actionParameterName将是articleId。