2011-12-20 5 views
0

ドロップダウンリストを作成するために使用する選択リストがあります。変更されたときに選択済みアイテムの値を取得するために既にjqueryを接続しました。これはすべて動作します。ドロップダウンアイテムの変更時にMVCにツールヒントを表示

私の目標は、アイテムがドロップダウンで変更されたときに長いテキストを表示することです。これは、HTMLでこれを達成するためのサポートされた属性がないので(私の理解から)、オプションのhtmlタグに格納することはできません。

私はMVCから自分のページにどのように辞書オブジェクトを返す必要があります。私はこのデータをページに載せたいと思っています。私は、項目が変更されるたびに遠隔呼び出しを行う必要はありません。

私の問題は、これを達成する方法がわかりません。私のコントローラでは、実際のドロップダウンの項目のリストと、表示する必要がある追加のデータのモデルを返さなければなりません。だから、私は "戻るビュー(mymodel)を実行する;"私はどのようにクライアント側にこのサーバー側の辞書オブジェクトを渡すかわからないので、javascriptはそれと対話することができます。誰かが私にこのオブジェクトをシリアル化する方法に関するいくつかのヒントをjavascriptのアクセス方法の例で教えてもらえますか?

ありがとうございます!

+0

JsonResultを使用できない理由を拡張してください。 –

+0

こんにちは、質問を少し更新しました。私は自分自身を今明らかにしたいと思っています。私は助けに感謝します。 – TheWebGuy

答えて

4

htmlの情報を隠しフィールドに格納し、jqueryを使用して情報をループすることができます。

例えば、あなたのコントローラでは、あなたは、この持っていることがあります。

public class Default1Controller : Controller 
{ 
    // 
    // GET: /Default1/ 

    public ActionResult Index() 
    { 
     Dictionary<string, string> dict = new Dictionary<string, string>(); 

     dict.Add("cat", "the cat is in the hat."); 
     dict.Add("dog", "the dog is hiding under the fence."); 
     dict.Add("mat", "the cat and the dog get hair on the mat."); 

     return View("ViewPage1.cshtml", dict); 

    } 

} 

をそして、あなたのビューは、このしていることがあります。

@model Dictionary<string, string> 

@{ 
    List<string> keys = new List<string>(Model.Keys); 
    foreach (string key in keys) 
    { 
     <input id="@key" type="hidden" class="dictionary" value="@Model["key"]" />     
    } 
} 

は、その後、あなたのアイテムの内側に隠しフィールドをループできたjqueryのイベントを変更しましたid =選択された項目のテキストの場合はclass = "dictionary"を使用してください...

$(".dictionary").each(function(){ 
    if(this.attr("id") == selectedItem){ 
     //display logic for the hidden field's value 
    } 
}); 

これが役立つことを願っています。

関連する問題