2012-02-20 74 views
1

我想知道如何將數據從控制器傳遞到mvc3剃鬚刀中查看。 該視圖位於.cshtml文件中。 我在控制器中有一個變量,用於存儲我需要推送到視圖中的列表框控件的數據。從控制器動作傳遞JSON數據到剃刀視圖

var results = data.Select(item => new { id = item, label = item.Value, value = item.Key }); 

這樣做:

return Json(results, JsonRequestBehavior.AllowGet); 

給我僅一個彈出與需要被推到列表框數據:

result

在列表框駐留在視圖手風琴控制:

<div id="accordion"> 
    @{int i=0;} 
     @foreach (var item in Model.Parameters) 
     { 
      <h3><a href="#">@Html.LabelFor(m => item.Name, item.Prompt)</a></h3> 
      <div>     

       <div class="editor-field"> 
        <select multiple id="@("Select" +item.Name)" name="@("Select" +item.Name)"></select>       
       </div>          
      </div> 
      i++; 
     }   
    </div> 

所以,我想知道我該如何將項目推送到列表框,而不是顯示控件的彈出窗口

MVC中的初學者,感謝您的理解。 由於提前,Laziale

編輯:JSON格式輸出

{System.Linq.Enumerable.WhereSelectListIterator<System.Collections.Generic.KeyValuePair<string,string>,<>f__AnonymousType1<System.Collections.Generic.KeyValuePair<string,string>,string,string>>} 
+0

你可以請你的控制器發佈JSON給你的視圖的格式。 – 2012-02-20 11:29:43

+0

@RoryMcCrossan請檢查帖子是否已更新格式。 Thx – Laziale 2012-02-20 12:08:39

+0

+1,很好的問題,我的朋友經常問我... – 2012-10-03 10:40:37

回答

2

返回JSON到你的剃鬚刀的看法是可能不是最好的方法。我建議使用一個本身是c#類的viewModel。

namespace Test 
{ 
    public class ViewModel 
    { 
     public bool GivingAPresentation { get; set; } 
    } 
} 

public class MyController: Controller 
{ 

    public virtual ActionResult Index() 
    { 
     var model=new ViewModel(){GivingAPresentation =true;} 
     return View(model); 
    } 

} 

您的視圖代碼:

@model Test.ViewModel <!-- Note the full namespace --> 

<br>GivingAPresentation: @Model.GivingAPresentation </br> 

如果你被迫與從你的行動返回,那麼你需要先反序列化,然後與目標工作JSON對象的工作。你可以閱讀這篇文章http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/08/22/using-c-4.0-and-dynamic-to-parse-json.aspx關於如何解析JSON到一個c#動態對象。

讓我知道是否有幫助。

+0

感謝您的評論,但我需要將它納入已經獲取數據的現有控件,但以其他方式。你認爲有可能這樣做嗎? Thx – Laziale 2012-02-20 12:41:13

+0

我已添加一個鏈接並更新了我的答案..看看是否有幫助.. – Baz1nga 2012-02-20 13:13:08

+0

+1,好的答案,我的朋友經常問我:) – 2012-10-03 10:41:04

相關問題