2010-11-19 9 views
0

に同じ名前を小枝、私は<は.IMG />そのように見て多くを持っている:ASP.NET MVCパスデータは、私のビューにコントローラ

<img id="img1" name="myName" alt='aa' href='..' /> 
<img id="img2" name="myName" alt='bb' href='..' /> 
<img id="img3" name="myName" alt='cc' href='..' /> 

質問があり、することが可能です同じnameの< .img />のすべてのalt属性を取得し、コントローラに、たとえばstring[]として渡しますか?最初の考えは、jQueryを使用してすべての属性を1つの文字列として結合し、それをコントローラに渡すことでしたが、他の方法があるかどうかは疑問です。

+0

私はそれはあなたが、コントローラ側でそれをどのように処理するかに依存しますね。 – melaos

答えて

1

すべてのALT値を取得し、AJAXリクエストとしてサーバーに送信するためにjqueryのを使用することができます。

var alts = $('img[name=myName]').map(function(i, item) { 
    return $(item).attr('alt'); 
}); 

$.ajax({ 
    url: '/', 
    data: { myName: alts.toArray() }, 
    traditional: true, 
    success: function(result) { 
     alert(result);    
    } 
}); 
+0

私は隠しフィールドに値としてalts変数を渡します。次に、(コントローラ内の)サーバー側で値を取得します。問題は、私は期待値の代わりに "[オブジェクトオブジェクト]"を取得する – Tony

+0

@トニー、どのような隠しフィールドですか?私が提供したコードスニペットでは、隠しフィールドは必要ありません。値をAJAXリクエストとして直接送信します。隠しフィールドを使用する場合は、複数の「alt」ごとに1つずつ必要です。 –

1

そうです。これらの値をサーバーに送信するには、クライアント側のスクリプトを使用する必要があります。

サーバー側でキャプチャする方法は他にありません。

1

サーバーにデータを戻す方法は、クエリ文字列とPOSTのPOST値だけです。あなたはこれらのaltタグをサーバーに送り返す必要がある場合:

  • JavaScriptを使用して画像から高度な情報を取り除くことができます。
  • それぞれのイメージで、ページ上のフォーム内に非表示の入力を作成します。
  • 各隠し入力には、各画像の値と同じ名前が必要です。
  • JavaScriptを使用してフォームを送信します。
  • MVCのバインディングでは、コントローラ内で使用できる文字列[]に同じ名前の隠れた入力が入ります。