2012-02-23 24 views
1

私の.cshtmlページにボタンがあります。 ボタンのIDをコントローラアクションに渡したいと思います。ビューからMVCコントローラにボタンIDを渡す

@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が正しく取得されていることがわかります:JSコードで今すぐ

enter image description here

が、ここで私がしようとしています何ですが、ここで は、私が現在持っているものです何らかの理由でコントローラのアクションで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

0

あなたのセレクタはオフになります。reportidを持つ要素のid値を取得する予定です

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

。私はそれがあなたが探しているものだとは思わない。

+0

しかし、これは単なる関数定義です。イベントが発生するまで呼び出されない場合、それが "準備完了"ハンドラの外にあることは問題ありません。 – Pointy

1

このライン:

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

さんがあなたのdivのIDをthで取得していますe IDレポート。

あなたは、そのIDを取得する機能テスト(にボタンを渡す)し、それを使用したい:あなたのjsのテストで、その後

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

とを()関数:

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

にも注意してください属性名では大文字と小文字が区別されます。あなたは "id"を書きましたが、あなたの属性は "Id"と呼ばれています。

+0

あなたの返信に感謝しますが、var itemId = $(this).attr( 'Id'); も私にヌル値を与えます。 – Laziale

関連する問題