C# 对整个表行使用Ajax actionlink
目前,我正在使用以下代码以表格下方的局部视图显示信息-C# 对整个表行使用Ajax actionlink,c#,model-view-controller,actionlink,C#,Model View Controller,Actionlink,目前,我正在使用以下代码以表格下方的局部视图显示信息- @foreach (var item in Model) { <tr> <td> @Ajax.ActionLink( item.FirstName, "DisplayApplication", new { ID = item.ColleagueID },
@foreach (var item in Model)
{
<tr>
<td>
@Ajax.ActionLink(
item.FirstName,
"DisplayApplication",
new { ID = item.ColleagueID },
new AjaxOptions { UpdateTargetId = "Application" }
)
</td>
<td>
...
</td>
<td>
...
</td>
<td>
...
</td>
<td>
...
</td>
</tr>
}
@foreach(模型中的变量项)
{
@Ajax.ActionLink(
item.FirstName,
“显示应用程序”,
新建{ID=item.collagueid},
新的AjaxOptions{UpdateTargetId=“应用程序”}
)
...
...
...
...
}
这个很好用。但是,我希望使整个表行可以单击,而不仅仅是人的名字。我似乎找不到与此类似的问题。总是可以用一种有点老套的方式来做。。。 这个javascript并不是很健壮——jQuery可能更安全,但它至少应该能够正常工作 基本上,我隐藏了原始链接(点击时连接了ajax事件),并在其旁边创建了一个虚拟副本。然后为整行添加一个onClick事件,在原始链接上触发click事件!我隐藏原始链接的原因是为了防止直接单击链接时触发两次单击事件
@foreach (var item in Model)
{
<tr onClick="this.children[0].children[0].click();">
<td>
@Ajax.ActionLink(
item.FirstName,
"DisplayApplication",
new { ID = item.ColleagueID },
new AjaxOptions { UpdateTargetId = "Application" },
new { style="display:none;" }
)
<a href="javascript:void(0);">@item.FirstName</a>
</td>
<td>
...
</td>
<td>
...
</td>
<td>
...
</td>
<td>
...
</td>
</tr>
}
@foreach(模型中的变量项)
{
@Ajax.ActionLink(
item.FirstName,
“显示应用程序”,
新建{ID=item.collagueid},
新的AjaxOptions{UpdateTargetId=“Application”},
新建{style=“display:none;”
)
...
...
...
...
}
回答得很好,谢谢,这让我想到了这个替代版本
<tr onclick="DoAjaxCall(@row.Key)">
我的页面包含一个简单的div元素
<div id="previewPane"></div>
您好,这很好,谢谢,尽管我认为会有一个更“标准”的方式来实现这一点。它也可以很好地去除标签,去掉你添加的样式行,这是有原因的吗?很高兴它对你有用,是的,我觉得应该有更好/更标准的解决方案,只是想不出一个!如上所述,隐藏样式和伪
标记的原因只是为了防止直接单击链接时ajax回调触发两次(因为它位于
中)。虽然没有测试,我不能100%确定这是否会发生。可能取决于更新目标是否包含表。
<div id="previewPane"></div>
public PartialViewResult Preview(int? rowKey = null)
{
if(rowKey != null)
{
/* do stuff */
}
return PartialView("_Preview");
}