2013-02-24 32 views
0

我已经使用HTML助手标签创建链接。根据下面给出的代码,当用户点击链接时,该页面将导航到称为Hello的另一个视图。使用HTML助手标签创建链接

 @Html.ActionLink("Hello", "Hello", new { id=item.pk }) 

但是,我想要做的是调用JS方法,并在同一页面打开一个div。我怎样才能做到这一点 ? 例如:显示和隐藏一些控件,当用户点击编辑

@foreach (var item in Model.exampleAll) 
{ 

@Html.ActionLink("Hello", "Hello", new { id=item.pk }) 
} 
+0

因为你不需要指定一个动作。只是一个没有href和JS事件处理程序的锚点 – 2013-02-24 19:55:31

+0

但是,我也需要掌握'id = item.pk'。我应该怎么做? – user1315906 2013-02-24 19:56:19

回答

1

,因为这听起来是如此的平凡,我会使用一个HTML锚

<a href='' id='@(item.pk)' class='itemsList'> click me </a> 

,然后jQuery的事件处理程序

$('.itemsList').click(function(){ 
     var currentId = this.id; // get id of object that was clicked 
     // populate or make visible your div here 
}); 

它不觉得像'MVC WAY',但你什么都不需要。

重要注意事项:如果您不想使用锚/链接进行任何导航,则使用Html.ActionLink似乎矫枉过正。

+0

你能建议我抓住记录的主键并将其传递给函数的最佳方法吗?请解释一下 – user1315906 2013-02-24 20:07:39

+0

@ user1315906。 item.pk尚未填充?如果不是,你的数据来源是什么? EF? – 2013-02-24 20:09:09

+0

Item.Pk是主键和它的填充。我只想知道如何将它传递给Jquery函数? – user1315906 2013-02-24 20:10:41

2

更改ActionLink的是:

@Html.ActionLink("Hello", "Hello","YourController", new { onclick = "yourFunction();"}) 

甚至更​​好添加一个js函数截取你的链接的点击,这里是用jQuery:

@Html.ActionLink("Hello", "Hello","YourController", new { id= "someLink"}) 

$('#someLink').click(function() { alert('hello'); }); 

编辑:如果你需要一个功能应用到多个元素使用的CSS类的选择,变更该ActionLink的:

@Html.ActionLink("Hello", "Hello","YourController", new { id= item.pk, @class = "classname"}) 

$('.classname').click(function() { alert(this.id); }); 
+0

'ActionLink'中的'someclick'是主键。所以我需要抓住这个值,并将其传递给函数。我怎么能根据你的第二种方法做到这一点? – user1315906 2013-02-24 20:06:32

+0

@ user1315906我编辑了答案 – 2013-02-24 20:21:22

+0

我更喜欢你的JQ。比我的简单得多。但是这个例子会让实际的href呈现错误吗? – 2013-02-24 20:42:18