我一直在研究一些代码,以便在下拉列表中选择项目时,它会被发送到控制器上的方法。我喜欢这样的事情:
@foreach (var invoiceLine in Model.InvoiceLines) {
<tr><td>
<span>Administrator:</span>
@Html.DropDownList("dropDownList", new[]
{
new SelectListItem { Text="", Value="0" },
new SelectListItem { Text = "First", Value = "1" },
new SelectListItem { Text = "Second", Value = "2" }
})
结合jQuery
:
$(function () {
$("#dropDownList").change(function () {
$("#dropDownList option:selected").each(function () {
$.getJSON("/Home/Owner/" + $(this)[0].value, null, function (data) {
doSomething();
});
});
});
无论如何,除了发送所选项目索引之外,我还想发送每个id
的{{1}}即。 invoiceLine
。
有人可以告诉我该怎么做吗?
此外,我已经意识到我的当前代码存在问题,invoiceLine.id
只会找到名为jQuery
的第一个dropDown
,即使会有很多。
任何方式围绕这个?
我能以正确的方式解决这个问题吗?
有更好的方法吗?
答案 0 :(得分:0)
如果您正在对它们执行任何操作,则立即向后发送这些值会使您受到其他安全攻击。
在大多数情况下,您只想返回他们选择的值(即使这样,您也需要根据您最初发送的内容来验证它是否是合法值。)
答案 1 :(得分:0)
我建议您将数据属性添加到
@Html.DropDownList("dropDownList", new[]
{
new SelectListItem { Text="", Value="0" },
new SelectListItem { Text = "First", Value = "1" },
new SelectListItem { Text = "Second", Value = "2" }
}, new{data-id=@invoiceLine.id })
稍后您将能够在JQuery函数中获取此值
$("select here your dropdown list").attr("data-id")
顺便说一句,ID用于标识 only 元素,如果你想标记许多元素(如你的情况)使用类。