2014-04-13 72 views
0

我是mvc的新手,這是我的要求。我正在開發一個應該呈現文本和複選框的頁面。該複選框將根據數據庫中的T/F值進行檢查。所以我將所有必要的數據從db傳遞到視圖中,作爲GetData()方法中的Json對象。mvc解析並顯示json的複選框內容

namespace ClinicalAdvantage.Web.Controllers.UserAppSettingC 
{ 
    using System; 
    using System.Collections.Generic; 
    using Newtonsoft.Json.Linq; 

    using NHibernate.Mapping; 

    public class UserAppSettingsController : Controller 
    { 
     private readonly IAgg1 agg; 

     public UserAppSettingsController(IAgg1 agg) 
     { 
       this.agg = agg; 
     } 

     #region Public Methods and Operators 

     public ActionResult Index() 
     { 
      return this.View(); 
     } 

     public ActionResult GetData() 
     { 
      return new JsonNetResult() { Data = this.agg.GetAllUserAppSettings() }; 
     } 

     public ActionResult Save(JObject userAppSettings) 
     { 
      if (userAppSettings != null) 
      { 
       this.agg.SaveAllUserAppSettings(userAppSettings); 
      } 

      return this.Json(new { Status = "Success" }); 
     } 

    #endregion 
    } 
} 

I have once tried returning the same data written as a viewmodel as a result of the index(). I had done something like 

    public ActionResult Index() 
     { 
      return this.View(model); 
     } 

And for this I wrote out the in the corresponding view as 

    @model ClinicalAdvantage.Web.ViewModels.UserAppSettings1.UserAppSettingsViewModel 


<form action="@Url.Action("Save")" method="post"> 
    @Html.CheckBoxFor(x => x.IsM, new { maxlength = "50", size = "50" }) 
    <!-- Form content goes here --> 
    <input type="submit" value="Save" /> 
</form> 

但由於某種原因,我沒有使用viewmodel來返回數據。所以上述編碼veiw的方式可能不對。我沒有使用GetData()將數據傳遞到前端,我無法真正改變它。公共ActionResult GetData(){返回新的JsonNetResult(){數據= this.agg.GetAllUserAppSettings()};返回新的JsonNetResult(){Data = this.agg.GetAllUserAppSettings()}; }

但我想知道如何編碼前端解析這個JSON數據,當我作爲類型JsonNetResult返回GetData方法的結果..我的視圖將在哪裏。如果我想顯示一個複選框並保存按鈕,應該是什麼代碼。該複選框將根據json返回的值填充。

這是我回國

的JSON { 「MaskPatientName」:{ 「已啓用」:真正的 「價值」:假}}

應該有一個名爲MaskPatienTName 複選框應該標籤檢查值屬性是否爲真

點擊save butoon控制器中的save方法被調用。

請幫我

回答

1

簡單的辦法是通過填充視圖模型到視圖索引中的作用

public ViewResult Index() 
{ 
    return View(agg.GetAllUserAppSettings()); 
} 

然後您認爲應該是這個樣子(使用HTML幫助創建形式標記)。這假定IsM是UserAppSettingsViewModel的一個屬性。

@model ClinicalAdvantage.Web.ViewModels.UserAppSettings1.UserAppSettingsViewModel 

@using (Html.BeginForm("Save", "UserAppSettings")) { 
    @Html.CheckBoxFor(x => x.IsM, new { maxlength = "50", size = "50" }) 
    <!-- Form content goes here --> 
    <input type="submit" value="Save" /> 
} 
+0

謝謝Philm!我明白你的意思。但由於某種原因,我沒有使用viewmodel來返回數據。那是我先做的。但是現在我真的不能改變這種將數據傳遞到前端的方式。這是作爲一個JSON使用GetData()這樣的事情公衆的ActionResult GetData() { 返回新的JsonNetResult(){數據= this.agg.GetAllUserAppSettings()}; } – user3290168

+0

所以你可以請告訴我如何從前端閱讀這個。我應該在哪裏寫這個視圖? – user3290168

+0

好的,那麼爲什麼不使用ViewBag將數據從您的動作傳遞到視圖?不要讓它比需要的更復雜!在一天結束時,您只設置複選框的值 – Philm