2012-02-23 110 views
1

我的.cshtml頁面中有一個按鈕。 我想將按鈕的ID傳遞給控制器​​操作。 這裏是我目前:從按鈕傳遞按鈕ID到MVC控制器

@foreach (var item in Model) 
{ 
    <div id="report">@Html.ActionLink(@item.Name, "Parameterize", "Report", new { Id = @item.Id }, null)</div><br /><br />       
    <input id="@item.Id" type="button" onclick="Test()" class="button1" value="Update" /> 

} 

在Firebug中,我可以看到ID爲正確牽強:

enter image description here

在js代碼

現在,這裏是我想的,但由於某些原因,控制器操作中的ID仍然爲空:

<script type="text/javascript"> 
    function Test() {  
     var itemId = $('#report').attr('id'); 
      var url = '@Url.Action("UpdateReport/", "Report")'; 
      var data = { Id:itemId }; 
       $.post(url, data, function (result) { 
        var id = '#postedFor' + postId; 
        $(id).html(result); 

      });     
    } 
</script> 

在控制器操作中,我有這個,並且id爲null這一次:

public ActionResult UpdateReport(string id) 
     { 
      return View("Index"); 
     } 

每個建議是更受歡迎。 由於提前,Laziale

回答

1

您正在生成許多<div>具有完全相同「ID」值的元素。元素的「id」在整個頁面上必須是唯一的,否則會發生奇怪的事情。

因此,$('#report')不會正常工作。也許你可以這樣做:

@foreach (var item in Model) 
{ 
    <div id="[email protected]">@Html.ActionLink(@item.Name, "Parameterize", "Report", new { Id = @item.Id }, null)</div><br /><br />       
    <input id="@item.Id" type="button" onclick="Test()" class="button1" value="Update" /> 

} 

或者,你可以直接通過輸入元素的處理程序:

<input id="@item.Id" type="button" onclick="Test(this)" class="button1" value="Update" /> 

然後:

function Test(item) {  
    var itemId = item.id, 
     var url = '@Url.Action("UpdateReport/", "Report")'; 
     var data = { Id:itemId }; 
      $.post(url, data, function (result) { 
       var id = '#postedFor' + postId; 
       $(id).html(result); 

     });     
} 
+0

謝謝,這工作順利。 – Laziale 2012-02-23 13:59:44

0

你的選擇看起來關:

var itemId = $('#report').attr('id'); 

這是會得到與reportidid值的元素的。我不認爲這就是你想要的。

+0

但它只是一個函數定義;如果在事件發生之前它不被調用,那麼它可以在「準備好」處理程序之外。 – Pointy 2012-02-23 13:38:34

1

這條線:

var itemId = $('#report').attr('id'); 

正在使用th獲取div的id電子身份證報告。

你想通過按鈕的功能測試(),並用它來獲得其ID:

<input id="@item.Id" type="button" onclick="Test(this)" ... 

然後在你的JS測試()函數:

var itemId = $(this).attr('Id'); 

還要注意,屬性名稱區分大小寫。你寫了「id」,但你的屬性被稱爲「Id」。

+0

感謝您的回覆,但var itemId = $(this).attr('Id'); 也給我空值。 – Laziale 2012-02-23 13:55:17