2011-12-11 4 views
1

Si j'ajoute des données à une table qui n'a aucune relation, tout est bon: les données sont en train d'ajouter. Mais si la table a des relations, c'est quelque chose qui ne va pasComment ajouter des données dans asp.net mvc?

Voici mon projet, ce que je veux dire, par exemple AddSt dans RouteController. http://zalil.ru/32249903 est contrôleur ici:

[HttpGet] 
    public ActionResult AddSt(int RouteId) 
    { 
     var routeDetails = (from rd in db.Route 
          join rdd in db.RouteDetail 
          on rd.RouteId equals rdd.Route.RouteId ///check 
          where rd.RouteId == RouteId 
          select rdd).FirstOrDefault(); 
     return View(routeDetails); 
    } 

    [HttpPost] 
    public ActionResult AddSt(RouteDetail rd) 
    { 
     try 
     { 

      if (ModelState.IsValid) 
      { 
      db.AddToRouteDetail(rd); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
      } 
     } 
     catch (Exception e) 
     { 
      ModelState.AddModelError("Error!", e); 
     } 
     return View(); 
    } 

et vue:

<% using (Html.BeginForm("AddSt","Route")) {%> 
    <%= Html.ValidationSummary(true) %> 

    <fieldset> 
     <legend>Fields</legend> 



     <div class="editor-label"> 

     </div> 
     <div class="editor-field"> 
      <%= Html.TextBoxFor(model => model.Route.RouteId)%> 
      <%= Html.TextBoxFor(model => model.Station)%> 
     </div> 

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

<% } %> 

Pourquoi je ne peux pas écrire modèle => model.RouteId ???? Qu'est-ce qui ne va pas? Pourquoi la table TrainSheduleDBEntities RouteDetail ne génère pas de champ RouteID?

+0

d'ailleurs pourquoi la classe Shedule ne reconnaît pas? – DPS

+0

J'ai vu après avoir mis le commentaire sur –

+0

1. ModelState.AddModelError ("Error!", E); // risque de sécurité 2. Pourquoi utilisez-vous L2S, utilisez EF. 3. Passez par Créer un modèle de données de cadre d'entité pour une application ASP.NET MVC Par Tom Dykstra pour comprendre les relations. 4. Utilisez Razor – RickAndMSFT

Répondre

1

Vous ne sélectionnez RouteDetail (RDD)

Vous voulez model.RouteId

Il suffit de coller un débogage sur l'action addst. Jetez un coup d'oeil ce qui est dedans.

Je suppose qu'il n'y a pas de routeid valide.

+0

[HttpPost] public ActionResult AddSt (RouteDetail rd) vous devez voir CE! ça ne marche pas quand j'insère en db! – DPS

+1

Hmmm, je vais développer –

+0

Donc RouteDetail a une propriété de type Route puis le fait, et est rempli quand. Ne faites que passer par le code que vous avez posté, et après avoir un peu deviné ce qui pourrait être dans ce que vous n'avez pas. Comme dans la classe RouteDetail. Avez-vous essayé ma suggestion? –

Questions connexes