2010-11-24 26 views
0

我有一個ViewModel(StoreViewModel)。當我在虛擬機從View到控制器(郵政)獲得價值,有些價值是在視圖中顯示爲空,只有一些價值不爲空ViewModel中的空值

PLZ幫我

public class StoreViewModel 
    { 
     public StoreViewModel() { } 
     public Store Store { get; set; } 
     public List<Member> Members { get; set; } 
     public List<Order> Orders { get; set; } 
     public List<AccountPayable> AccountsPayable { get; set; } 
    } 

這是我的看法

<% using(Html.BeginForm()) {%> 
    <div><%: Html.TextBoxFor(model => model.Store.Name) %></div> 
    <div><%: Html.TextBoxFor(model => model.Store.State) %></div> 
    <div><input type="submit" value="Submit" /></div> 
    <% } %> 

我設置[HiddenInput(DisplayValue = FALSE)]在實體商店,會員,訂單列,AccountPayable

+++

這是我的控制器。 (我嘗試使用FormCollection從View中獲取值,但是...不成功)

[HttpPost] 
     public ActionResult Details(Finger finger, StoreViewModel storeVM) 
     { 
      //if (finger.roleName != "Administrator") 
      // return RedirectToAction("DisplayNotice", "Notice"); 
      storeVM.Store.Active = (CheckBoxHelpers.GetValue(storeVM.Store.Active)).ToString(); 
      if (ModelState.IsValid) 
      {    
       storesRep.SaveStore(storeVM.Store, true); 
      } 
      else 
      { 
       return View(storeVM); 
      } 

      return RedirectToAction("List", "Stores"); 
     } 
+0

你能告訴我們你的控制器代碼嗎? – ZippyV 2010-11-24 21:20:27

回答

1

您應該確保該值實際上存在於POST請求中。事實上,你正在得到null是一個強烈的跡象表明,情況並非如此。您可以使用FireBug準確查看發佈到服務器的值。

從我可以看到你的形式

而且只包含商店名稱和狀態文本字段,所以這些都是唯一的值,你可以期望取回您的POST操作:

<% using(Html.BeginForm()) {%> 
    <div><%: Html.TextBoxFor(model => model.Store.Name) %></div> 
    <div><%: Html.TextBoxFor(model => model.Store.State) %></div> 
    <div><input type="submit" value="Submit" /></div> 
<% } %> 

您可能需要包括其他人也是如此。你可以使用隱藏字段發送你需要的值。

在你的控制器動作,您正在嘗試讀取storeVM.Store.Active字段,以便包括 它在你的形式:

<%: Html.HiddenFieldFor(model => model.Store.Active) %>