2010-05-16 4 views
0

en utilisant le code DataViewModel avec un formulaire pour créer et modifier avec vue partielle, dans le code ci-dessous dans la création Je ne suis pas en mesure d'entrer les valeurs à la base de données, dans le mode d'édition Je ne suis pas en mesure d'afficher la valeur aussi bien dans les zones de texte pour éditer (L'enregistrement est créé mais aucune valeur de formulaire ne va à la base de données).ASP.NET MVC DataViewModel problème sans insert et modifier

public class OrganizationGroupFormViewModel 
{ 

// Properties 
    public OrganizationGroup OrganizationGroup { get; private set; } 

    public OrganizationGroupFormViewModel(OrganizationGroup organizationGroup) 
    { 
     OrganizationGroup = organizationGroup; 

    } 

}

public class OrganizationGroupsController : Controller 
{ 
    // 
    // GET: /OrganizationGroups/ 
    OrganizationGroupsRepository OrganizationGroupRepository = new OrganizationGroupsRepository(); 
    OrganizationUsersDataContext _db = new OrganizationUsersDataContext(); 

    public ActionResult Create() 
    { 
     try 
     { 
      OrganizationGroup OrgGroup = new OrganizationGroup() { 
       int_CreatedBy=1, 
       dtm_CreatedDate=DateTime.Now 

      }; 

      return View(new OrganizationGroupFormViewModel(OrgGroup)); 
     } 
     catch 
     { 
      return View(); 
     } 

      } 


    [HttpPost] 
    public ActionResult Create(OrganizationGroup OrgGroup) 
    { 


     if (ModelState.IsValid) 
     { 


      OrgGroup.int_CreatedBy = 1; 
      OrgGroup.dtm_CreatedDate = DateTime.Now; 
      OrganizationGroupRepository.Add(OrgGroup); 
      OrganizationGroupRepository.Save(); 

      return RedirectToAction("Details", new { id = OrganizationGroupRepository.int_OrganizationGroupId }); 

     } 
     return View(new OrganizationGroupFormViewModel(OrgGroup)); 
    } 

    // 
    // GET: /OrganizationGroups/Edit/5 

    public ActionResult Edit(int id) 
    { 
     try 
     { 
      var OrgGroup = _db.OrganizationGroups.First(m => m.int_OrganizationGroupId == id); 

      if (ModelState.IsValid) 
      { 
       OrgGroup.int_ModifiedBy = 1; 
       OrgGroup.dtm_ModifiedDate = DateTime.Now; 


      } 
      return View(new OrganizationGroupFormViewModel(OrgGroup)); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

    // 
    // POST: /OrganizationGroups/Edit/5 

    [HttpPost] 
    public ActionResult Edit(int id, FormCollection collection) 
    { 
     try 
     { 

      var OrgGroup = _db.OrganizationGroups.First(m => m.int_OrganizationGroupId == id); 

      if (ModelState.IsValid) 
      { 
       OrgGroup.int_ModifiedBy = 1; 
       OrgGroup.dtm_ModifiedDate = DateTime.Now; 
       TryUpdateModel(OrgGroup); 
       OrganizationGroupRepository.Save(); 
      } 

      return RedirectToAction("Details", new { id = OrgGroup.int_OrganizationGroupId }); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

Créer une vue;

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Egovst.Controllers.OrganizationGroupFormViewModel>" %> 

Créer Organisation Groupe

<h2>Create</h2> 
    <%= Html.ValidationSummary(true) %> 

<div> 
    <% Html.RenderPartial("OrganizationGroup"); %> 
</div> 

Organisation Groupe de contrôle utilisateur

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Egovst.Controllers.OrganizationGroupFormViewModel>" %> 

<% using (Html.BeginForm()) {%> 
    <%= Html.ValidationSummary(true) %> 

    <fieldset> 
     <legend>Fields</legend> 


     <div class="editor-label"> 
      Organization Group Name: 
     </div> 
     <div class="editor-field"> 
      <%= Html.TextBoxFor(model => model.OrganizationGroup.vcr_OrganizationGroupName)%> 
      <%= Html.ValidationMessageFor(model => model.OrganizationGroup.vcr_OrganizationGroupName)%> 
     </div> 

     <div class="editor-label"> 
       Organization Group Description: 
     </div> 
     <div class="editor-field"> 
      <%= Html.TextAreaFor(model => model.OrganizationGroup.vcr_OrganizationGroupDesc)%> 
      <%= Html.ValidationMessageFor(model => model.OrganizationGroup.vcr_OrganizationGroupDesc)%> 
     </div> 


     <p> 
      <input type="submit" value="Save" /> 
     </p> 
    </fieldset> 

<% } %> 
+0

ok étrange presque le même code fonctionne pour le modèle de cadre d'entité? J'ai créé le modèle d'entité et modifié uniquement la base de données d'insertion d'insertion de la base de données. Ça marche. mais quel mal je peux faire ci-dessus? – maztt

Répondre

1

Je pense que c'est parce que votre vue hérite de OrganizationGroupFormViewModel et dans le post de la vue vous utilisez le modèle OrganizationGroup.

J'essaierais d'accepter le OrganizationGroupFormViewModel dans le message bien que celui-ci n'ait pas été testé.

EDIT

L'autre chose que vous pourriez essayer est dans vos zones de texte en utilisant le nom qui est qualifié à votre modèle. J'ai trouvé ceci aide quand je ne passe pas dans le modèle de vue de forme à mon contrôleur.

+0

ok cela fonctionne dans la zone de texte pas dans textboxfor pourquoi? – maztt

+0

J'ai eu le même problème avec textboxfor dans les vues partielles. pas dans la vue principale juste partiels et je ne peux pas l'expliquer. peut-être pourriez-vous soulever une question? – griegs

+0

ok merci oui pour moi aussi il n'y a pas de problème dans la vue complète – maztt