这是我的Razor页面,其中包含多个div,每个div包含带有NeighbourhoodName和其他内容的follow或unfollow按钮。
<p class="lead" style="display: none" data-bind="visible: profiles().length == 0">No neighbourhood found...</p>
<ul data-bind="visible: profiles().length > 0, foreach: profiles">
<li class="media" style="border-top: solid 1px lightgrey; padding-top: 15px;">
<div class="media-body">
<h4 class="media-heading">
<a class="btn pull-right" data-bind="visible: !IsFollowed, attr: { href: followAction }">Follow</a>
<a class="btn btn-danger pull-right" data-bind="visible: IsFollowed, attr: { href: unfollowAction }">Unfollow</a>
</h4>
<em data-bind="text: NeighbourhoodName"></em>
<em data-bind="text: NeighbourhoodId"></em>
//stuck at this line
<a href="/Neighbourhood/NeighbourhoodDetail/@Neig"> </a>
</div>
</li>
我想点击任意一个div来生成一个新页面。所以,我想通过点击相应的div发送邻居的id到动作方法。现在,我能够使用data-bind属性获取NeighbourhoodId,但不知道如何通过点击div的任何区域将此id发送到action方法意味着如何混合此锚标记。类似的东西。
这是我在一个淘汰代码中的关注动作网址,它会在关注按钮上发送neighbourhoodId:
self.followAction = location.protocol + "//" + location.host + '/Neighbourhood/Follow?uid=' + data.NeighbourhoodId;
但是,我不想要任何按钮。简单点击div应该发送id to action方法。 如何实现这一目标。请给我一些建议。
答案 0 :(得分:0)
您只需在div上使用click binding,并将其绑定到viewmodel中的函数。
viewmodel中的函数接收bound元素中可用的knockout上下文作为参数。因此,您可以直接从该功能访问所需的数据。
<div class="media-body" data-bind="click: yourViewModelFunction">
在你的viewmodel中,你的函数应该像这样实现:
yourViewModelFunction = function(data) {
// here you can use data.NeighbourhoodId
}