1

これはeditcarに対する私の見解です:

<%@ 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__AnonymousType21 1 [System.String]' but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable[J2V.Models.vehicule]'です。

4

1 に答える 1

2

通常、「インデックス」ビューのモデルはIEnumerable<YourModel>です。ただし、更新後は、匿名オブジェクトを「インデックス」ビューにプッシュします。(行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();

お役に立てれば...

于 2012-04-12T16:57:27.777 に答える