我需要从视图重定向到控制器操作。 我在View中的代码看起来像这样。
<table id="tableid">
<thead>
<tr>
<th id="Sno">S No</th>
<th>Name</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody >
@foreach (var sd in Model.Details)
{
<tr id="trid">
<td>@sd .Id</td>
<td>@sd .Name</td>
<td>@sd .Status</td>
<td>
<a id="actionId" onclick="Clickfn()" >
</a>
<script>
function Clickfn() {
window.location.href = '@Url.Action("UpdateCamp", "CampDashboard", new {id =@sd .Id })'
}
</script>
</td>
</tr>
}
</tbody>
</table>
代码返回@sd .Id的最后一个Id,同时点击tag..how获取特定的单元格值(存在标记的单元格。)
答案 0 :(得分:2)
您可以使用a
属性将值附加到data
元素,然后您可以在click
处理程序中使用该属性:
@foreach (var sd in Model.Details)
{
<tr id="trid">
<td>@sd .Id</td>
<td>@sd .Name</td>
<td>@sd .Status</td>
<td>
<a id="actionId" data-id="@sd.Id" href="#"></a>
</td>
</tr>
}
$('#tableid a').click(function(e) {
e.preventDefault();
window.location.href = '@Url.Action("UpdateCamp", "CampDashboard")?id=' + $(this).data('id');
}
答案 1 :(得分:1)
您应该使用Html.ActionLink,返回包含指定操作的虚拟路径的锚元素(元素)。
<td>
@Html.ActionLink(sd.Name, "UpdateCamp", "CampDashboard", new {id = @sd.Id})
</td>
OR
您无法将JavaScript变量传递给Url.Action
。进一步的Url.Action
函数将呈现一个字符串。你应该替换字符串。
您应该将@sd.Id
作为参数传递给Clickfn()
使用
@foreach (var sd in Model.Details)
{
<td>
<tr>
<a id="actionId" onclick="Clickfn(@sd.Id)"></a>
</td>
</tr>
}
<script>
function Clickfn(id) {
var url = '@Url.Action("UpdateCamp", "CampDashboard", new {id = -1})'; //Generate URL string using razor
window.location.href = url.replace('-1', id); //replace ID value
}
</script>
答案 2 :(得分:0)
将锚标记更正为: -
<a id="actionId" onclick="Clickfn(@sd.Id)" >
并将Clickfn
更改为:
<script>
function Clickfn(Id) {
window.location.href ="/CampDashboard/UpdateCamp?id" + Id;
}
</script>