我的.cshtml页面中有一个按钮。 我想将按钮的id传递给控制器动作。 这是我目前的情况:
@foreach (var item in Model)
{
<div id="report">@Html.ActionLink(@item.Name, "Parameterize", "Report", new { Id = @item.Id }, null )</div><br /><br />
<input id="@item.Id" type="button" onclick="Test()" class="button1" value="Update" />
}
在Firebug中,我可以看到id被正确获取:
现在在js代码中,这是我正在尝试的,但由于某种原因,在控制器操作中id仍为null:
<script type="text/javascript">
function Test() {
var itemId = $('#report').attr('id');
var url = '@Url.Action("UpdateReport/", "Report")';
var data = { Id:itemId };
$.post(url, data, function (result) {
var id = '#postedFor' + postId;
$(id).html(result);
});
}
</script>
在控制器操作中我有这个,此时id为null:
public ActionResult UpdateReport(string id)
{
return View("Index");
}
每个建议都更受欢迎。 在此先感谢Laziale
答案 0 :(得分:1)
您正在生成许多具有完全相同“id”值的 <div>
元素。元素的“id”在整个页面上必须是唯一的,否则会发生奇怪的事情。
因此,$('#report')
无法正常工作。也许你可以这样做:
@foreach (var item in Model)
{
<div id="report_@item.Id">@Html.ActionLink(@item.Name, "Parameterize", "Report", new { Id = @item.Id }, null )</div><br /><br />
<input id="@item.Id" type="button" onclick="Test()" class="button1" value="Update" />
}
或者,您可以将input元素直接传递给处理程序:
<input id="@item.Id" type="button" onclick="Test(this)" class="button1" value="Update" />
然后:
function Test(item) {
var itemId = item.id,
var url = '@Url.Action("UpdateReport/", "Report")';
var data = { Id:itemId };
$.post(url, data, function (result) {
var id = '#postedFor' + postId;
$(id).html(result);
});
}
答案 1 :(得分:1)
这一行:
var itemId = $('#report').attr('id');
使用id报告获取div的id。
您希望将按钮传递给函数test()并使用它来获取其id:
<input id="@item.Id" type="button" onclick="Test(this)" ...
然后在你的js Test()函数中:
var itemId = $(this).attr('Id');
另请注意,属性名称区分大小写。你写了“id”,但你的属性叫做“Id”。
答案 2 :(得分:0)
你的选择器关闭:
var itemId = $('#report').attr('id');
这将获得id
id
report
元素的{{1}}值。我认为这不是你想要的。