我希望textbox的更改事件上的每个文本框的ID。我已经为此完成了代码,但我没有得到预期的结果。我在这里得到文本框的值,这是每个文本框中的“金额”。
这是我的HTML代码: -
@foreach (var item in ViewBag.countries)
{
<td>@Html.EditorFor(model => model.Amount, new { id = item.ID })</td>
}
这是我的jquery代码: -
$('input[type="text"]').change(function () {
var id = this.id;
alert(id);
});
答案 0 :(得分:0)
如果我猜对了,那么Editorfor
值就不正确了。在这种情况下,它应该是@Html.EditorFor(model => model.Amount, Model.Amout, new {id = item.ID})
。试试这个,我认为它应该有用。
这是因为EditorFor
的第二个参数与模型绑定,并且它不是Html属性。
此外,我建议您始终在视图中使用for
循环,因为绑定可能会导致foreach循环出现问题。
所以在你的情况下,它看起来像这样:
@for(int i = 0; i < ViewBag.countries.Count; i++)
{
<td>
@Html.EditorFor(model => model.Amount, Model.Amount, new { id = item.ID })
</td>
}
详尽解释:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/
答案 1 :(得分:0)
我建议使用类似的东西:
new { data_id = item.id }
只是因为EditFor帮助器正在覆盖ID属性,以便正确映射到您的模型。如果您使用的是EditorFor,则不应混淆ID和name属性。
而是使用我上面所说的,然后像这样取:
$('input[type="text"]').change(function () {
var id = $(this).data('id');
alert(id);
});
另外,请确保您的ViewBag.Countries具有正确的国家/地区ID值...
还有一件事:“这个”和“$(this)”不一样。对于你的JQuery代码,你需要有$(this),如果你想引用触发更改事件的元素...