Jquery MVC选择表中的项目发送到控制器方法id和所选项目

Jquery MVC选择表中的项目发送到控制器方法id和所选项目,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我一直在编写一些代码,这样当在下拉列表中选择一个项目时,它会被发送到控制器上的一个方法。我喜欢: @foreach (var invoiceLine in Model.InvoiceLines) { <tr><td> <span>Administrator:</span> @Html.DropDownLis

我一直在编写一些代码,这样当在下拉列表中选择一个项目时,它会被发送到控制器上的一个方法。我喜欢:

@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" } 
        })
无论如何,除了发送所选项目索引外,我还想发送每个发票行的id,即invoiceLine.id

有人能告诉我怎么做吗

此外,我意识到我当前的代码中存在一个问题,即jQuery只能找到名为dropDownList的第一个下拉列表,即使有很多

有什么办法吗

我这样做对吗


是否有更好的方法?

如果您正在使用这些值进行任何操作,发送回这些值会立即使您遭受额外的安全攻击


在大多数情况下,您只想返回他们选择的值,甚至需要根据最初发送给他们的内容验证该值是否合法。

我建议您将数据属性添加到

@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用于标识唯一的元素。

这是一个安全问题吗?来自浏览器的任何数据都是可疑的,因为它很容易替换。当您接受来自用户的数据时,首先要问的是。。有人能用这些数据做些什么来伤害我?假设您正在使用某种东西来保护自己免受SQL注入攻击,那么答案有时可能是零。。但即便如此,最好还是尽量少地从用户那里获取所需的信息。
$("select here your dropdown list").attr("data-id")