2012-04-12 5 views
1

Это мой взгляд на editcar:Обновление данных с помощью Entity Framework

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<J2V.Models.vehicule>" %> 
//code 
<% using (Html.BeginForm("editcar", "Agence", FormMethod.Post, new { @class = "search_form" })) { %> 
    <%: Html.ValidationSummary(true) %> 
    <fieldset> 
     <legend>vehicule</legend> 
     // Those colonne will not be modified 
     <%: Html.HiddenFor(model => model.Matv) %> 
     <%: Html.HiddenFor(model => model.Idag) %> 
     <%: Html.HiddenFor(model => model.Idcat) %> 
     <%: Html.HiddenFor(model => model.idmarque) %> 
     <%: Html.HiddenFor(model => model.modele) %> 

     //Colonne to edit code 

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

Это мой контроллер действия:

[HttpPost] 
public ActionResult editcar(Models.vehicule model) 
{ 
     if (ModelState.IsValid) 
     { 
      entity.vehicule.AddObject(model); 
      entity.ObjectStateManager.ChangeObjectState(model, System.Data.EntityState.Modified); 
      entity.SaveChanges(); 
      return View("index", new { id = model.Idag }); 
     } 
     else 
      return View(); 
} 

При нажатии на кнопку Update я получаю эту ошибку:

System.InvalidOperationException: элемент модели, переданный в словарь, имеет тип '<> f__AnonymousType 2 1 [System.String]' but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [J2V.Models.vehicule] '.

ответ

2

Как правило, модель «индекса» имеет вид IEnumerable<YourModel>. Но после обновления вы вызываете анонимный объект в представление «index»; (строка: return View("index", new { id = model.Idag });) Это может быть причиной исключения.

Вы можете перенаправить к действию индекса:

if (ModelState.IsValid) 
    { 
     entity.vehicule.AddObject(model); 
     entity.ObjectStateManager.ChangeObjectState(model, System.Data.EntityState.Modified); 
     entity.SaveChanges(); 
     //return View("index", new { id = model.Idag }); 
     return RedirectToAction("index", new { id = model.Idag }); 
    } 
    else 
     return View(); 

Надеется, что это помогает ...

Смежные вопросы