2011-07-21 47 views
2

在強類型視圖中,我有一個下拉列表,裏面填充了來自我的viewmodel的列表中的「樂器」。每次用戶點擊音樂家工具應顯示在下拉列表下方的項目。json result to strong typed List

這是我的視圖模型

public class RegisterMusicianModel 
{ 
    public RegisterMusicianModel() 
    { 
     instrumentRepository = new InstrumentRepository(); 
     instrumentlist = instrumentRepository.FindAllInstruments().ToList<instrument>(); 
     musicianinstrumentlist = new List<musiciansinstrument>(); 
    } 
    private InstrumentRepository instrumentRepository; 
    private List<instrument> instrumentlist; 
    private List<musiciansinstrument> musicianinstrumentlist; 

    public List<musiciansinstrument> Musicianinstrumentlist 
    { 
     get { return musicianinstrumentlist; } 
     set { musicianinstrumentlist = value; } 
    } 

    public List<instrument> Instrumentlist 
    { 
     get { return instrumentlist; } 
     set { instrumentlist = value; } 
    } 


    private musician music = new musician(); 

    public musician Music 
    { 
     get { return music; } 
     set { music = value; } 
    } 


} 

正如你可以看到我有儀器的填充列表,音樂家儀器的空列表和音樂家的對象。 因此,每次用戶更改下拉列表中的選擇時,此方法都會被調用並返回一個JSON對象(音樂家工具,而不是樂器)。

[HttpPost] 
    public JsonResult AjaxInstrumentsMusician(int id) 
    { 
     musiciansinstrument mi = new musiciansinstrument(); 
     mi.idInstruments = id; 
     mi.Instrumentname = instrumentrepo.GetInstrument(id).name; 

     return Json(mi); 
    } 

腳本:

$(document).ready(function() { 
    $('#Instrumentlist').change(function (e) { 
     var myval = $('#Instrumentlist').val(); 
     alert(myval); 
     $.ajax({ 
      url: "/Account/AjaxInstrumentsMusician", 
      type: "POST", 
      data: { id: myval }, 
      success: function (result) { 
       alert(result.Instrumentname); 
      }, 
      error: function() { 
       alert('failed'); 
      } 
     }); 
    }); 
}); 

我可以顯示在我看來,JSON對象的屬性,無論我想,這是確定。但我真正想要的是將其添加到強類型對象(視圖模型中的空列表)。所以我可以從我的HTTPPOST方法中的viewmodel參數訪問它。我不是FormCollection的額外參數,ViewBags,...

我有點新的概念JSON,我無法在谷歌上找到任何好的解釋。這可能嗎?有沒有解決這個問題的另一個優雅的方式?

+0

幾乎不能理解你想要做什麼。當用戶選擇儀器時填充列表?在呈現之前填充它以查看?或者在json方法中使用模型? – Rattlemouse

+0

我有一個JSONresult可以在我的視圖中使用。我想將它添加到我的viewmodel中定義的List中,因爲它是一個強類型View我希望當用戶提交表單時可以訪問model.musicianinstrumentlist屬性中的JSON結果'[HttpPost] public ActionResult RegisterMusician(RegisterMusicianModel model ){model.musicianinstrumentlist;返回null; }'這可能實現嗎? – BBQ

回答

1

好的,現在很明顯。

您可以在JavaScript中構建類似的對象並將其作爲模型look here for an example how to發送。

+0

鏈接讓我走上了正確的道路。在過去幾天閱讀了這個問題和其他關於這個問題的話題後,我還有幾個問題。我在這裏開始一個新的問題[鏈接](http://stackoverflow.com/questions/6800469/asp-net-mvc-3-question-about-json-and-serialization)得到更多的迴應,並更好地解釋我的問題我現在知道的信息。 – BBQ