从按钮传递按钮ID到MVC控制器
我的.cshtml页面中有一个按钮。 我想将按钮的ID传递给控制器操作。 这里是我目前:从按钮传递按钮ID到MVC控制器
@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为正确牵强:
现在,这里是我想的,但由于某些原因,控制器操作中的ID仍然为空:
<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
您正在生成许多<div>
具有完全相同“ID”值的元素。元素的“id”在整个页面上必须是唯一的,否则会发生奇怪的事情。
因此,$('#report')
不会正常工作。也许你可以这样做:
@foreach (var item in Model)
{
<div id="[email protected]">@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 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);
});
}
你的选择看起来关:
var itemId = $('#report').attr('id');
这是会得到与report
的id
的id
值的元素的。我不认为这就是你想要的。
但它只是一个函数定义;如果在事件发生之前它不被调用,那么它可以在“准备好”处理程序之外。 – Pointy 2012-02-23 13:38:34
这条线:
var itemId = $('#report').attr('id');
正在使用th获取div的id电子身份证报告。
你想通过按钮的功能测试(),并用它来获得其ID:
<input id="@item.Id" type="button" onclick="Test(this)" ...
然后在你的JS测试()函数:
var itemId = $(this).attr('Id');
还要注意,属性名称区分大小写。你写了“id”,但你的属性被称为“Id”。
感谢您的回复,但var itemId = $(this).attr('Id'); 也给我空值。 – Laziale 2012-02-23 13:55:17
谢谢,这工作顺利。 – Laziale 2012-02-23 13:59:44