【发布时间】:2016-05-28 09:44:05
【问题描述】:
我基本上有这样一张桌子:
<table class="table table-bordered table-responsive table-striped" id="tabelaIzostanci">
<thead>
<tr>
<td><b>Ime i prezime</b></td>
<td><b>Predmet</b></td>
<td><b>Profesor</b></td>
<td><b>Razlog</b></td>
<td><b>Opravdano</b></td>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@item.Ucenik.Ime @item.Ucenik.Prezime</td>
<td>@item.Cas.Predmet.Naziv</td>
<td>@item.Cas.Nastavnik.Ime @item.Cas.Nastavnik.Prezime</td>
@if (item.Napomena == "")
{
<td>Napomena nije unesena.</td>
}
else
{
<td>@item.Napomena</td>
}
@if (item.Opravdano == false)
{
<td>Ne</td>
}
else
{
<td>Da</td>
}
<td>
<form>
<button type="button" onclick="toggle_visibility('toggle');" class="btn btn-primary">Opravdaj</button>
<input type="hidden" id="txtID" name="test" value="@item.OdsutnostID"/>
</form>
</td>
</tr>
}
</tbody>
</table>
我拥有的按钮位于表格之外,如下所示:
<button style="float:right; width:100px;" type="button" onclick="CallMe()" class="btn btn-primary">Save</button>
我正在使用的 Javascript 函数是:
function CallMe() {
if ($('#txtID').val() !== '') {
$.ajax({
url: '/Controller/Action',
type: 'POST',
data: { txtID: $('#txtID').val(),
success: function (data) {
Alert('Success');
},
error: function (error) {
alert('Error: ' + error);
}
});
}
我的 Action 看起来像这样:
Public ActionResult Action(string txtID)
{
// checking whether the ID is there
}
函数被调用,但是从 View 传递到 Controller 的 ID 总是静态的,并且总是被标记为“1”。如果我单击表中 ID = 2 的第二条记录,则传递的 ID 仍为 =1;
我不能使用模型,因为它被用于其他用途。所以我的问题是,有没有什么方法可以将 ID 从 View 动态传递到 Controller 而无需使用模型??
或者有人可以帮我解决为什么 ID 总是 = 1?
谢谢!
编辑:
这是显示和隐藏表单的按钮:
function toggle_visibility(id) {
var e = document.getElementById(id);
if (e.style.display == 'block')
e.style.display = 'none';
else
e.style.display = 'block';
}
【问题讨论】:
-
因为您的 html 无效(重复的
id属性)并且$('#txtID').val()只会返回带有id="txtID"的第一个元素的值。 -
那么我该怎么做才能动态正确地传递值呢?
-
您说按钮在 表格之外,这毫无意义 - 您如何确定要发布的“行”值?
-
嗯,我确实有两个按钮...一个按钮在表格中,基本上它的作用是,一旦按下它,它会在表格下方显示表格以填充文本区域,一旦按钮按下文本区域下方,表格的内容应该更新...
-
您需要显示代码,包括与表格中的按钮关联的任何脚本
标签: javascript jquery asp.net-mvc parameter-passing