2011-08-29 37 views
0

我一直在研究一些代碼,以便在下拉列表中選擇一個項目時,它將被髮送到控制器上的一個方法。我是這樣的:MVC選擇表中的項目發送到控制器的方法ID和選定項目

@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(); 
       }); 
      }); 
     }); 

反正以及發送所選項目的索引我也想送的每個invoiceLineidinvoiceLine.id

有人可以告訴我如何做到這一點?

此外,我已經意識到我在我的當前代碼中有一個問題,即jQuery將只會找到第一個dropDown,即使會有很多名爲dropDownList

任何方法嗎?

我對此有何看法?

有沒有更好的方法?

回答

0

我建議你添加數據屬性您

@Html.DropDownList("dropDownList", new[] 
    { 
     new SelectListItem { Text="", Value="0" }, 
     new SelectListItem { Text = "First", Value = "1" }, 
     new SelectListItem { Text = "Second", Value = "2" } 
    }, new{[email protected] }) 

以後你就可以在你的jQuery函數來得到這個值作爲

$("select here your dropdown list").attr("data-id") 

順便說一句,ID用於識別只有元素,如果你想標記許多元素(就像你的情況)使用類。

0

如果您對它們進行任何操作,立即發送值會使您受到其他安全性攻擊。

在大多數情況下,你只想要回他們選擇的值(甚至那麼你需要確認它是一個基於你送什麼他們最初是一個合法的值。)

+0

這是一個安全問題? – AnonyMouse

+1

瀏覽器的任何數據都是可疑的,因爲它很容易更換。任何時候,當你接受用戶的數據時,你首先要問的是......有人會用這些數據做什麼會傷害到我?假設你正在使用某些東西來保護自己免受SQL注入攻擊,那麼答案可能偶爾不會有任何結果。但即使如此,最好還是儘可能少地從用戶那裏獲取所需的信息。 –

相關問題