2010-11-24 18 views
0

Ich habe ein ViewModel (StoreViewModel). Wenn ich Wert in VM von Blick auf Controller (Post) zu bekommen, ist etwas Wert null, nur einige Werte, der auf Ansicht angezeigt wirdNullwert in ViewModel

nicht null ist plz help me

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; } 
    } 

Hier ist meine Ansicht ist

<% 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> 
    <% } %> 

I set [HiddenInput (Display = false)] auf Spalten in Entity Store, Mitglied, Ordnung, AccountPayable

+++

Hier ist mein Controller. (Habe ich versucht, den Einsatz zu Formcollection Wert von View, aber ... Erfolglosigkeit)

[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

Können Sie uns Ihre Controller-Code zeigen? – ZippyV

Antwort

1

Sie sollten sicherstellen, dass der Wert in der POST-Anforderung tatsächlich vorhanden ist. Die Tatsache, dass Sie bekommen null ist ein starkes Anzeichen, dass dies nicht der Fall ist. Sie können FireBug verwenden, um genau zu sehen, welche Werte auf dem Server veröffentlicht werden.

auch von dem, was ich Ihre Form sehen kann, enthält nur Speichernamen und Staat Textfelder so dass diejenigen, die einzigen Werte sind, können Sie erwarten, dass in Ihrer POST Aktion zurück:

<% 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> 
<% } %> 

Sie könnten die enthalten müssen andere auch. Sie können versteckte Felder verwenden, um die von Ihnen benötigten Werte zu senden.

In Ihrem Controller-Aktion versuchen Sie das storeVM.Store.Active Feld so sind es in dem Formular zu lesen: zu

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