0

私はmv3を使用しています。作成ボタンをクリックするとデータがデータベースに送信され、ボタンの下のリストが更新される必要があるアプリケーションを作成しています。

部分ビューも試しましたが、エラーが表示されます:

ディクショナリに渡されたモデル アイテムのタイプは 'System.Collections.Generic.List`1[MvcStudent.stu]' ですが、このディクショナリにはタイプ 'MvcStudent.Models.StuModel' のモデル アイテムが必要です。

以下にコードをリストしています plz help

StudentController.cs

    public class StudentController : Controller
    {
        //
        // GET: /Student/
        stdataDataContext stdb = new stdataDataContext();
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult create()
        {

            return View(stdb.stus.ToList());
        }

        [HttpPost]
        public ActionResult create(MvcStudent.Models.StuModel stu)
        {

            stu student = new stu();
            student.name = stu.name;
            student.address = stu.addr;
            stdb.stus.InsertOnSubmit(student);
            stdb.SubmitChanges();

            return View();

        }

    }

_Create.cshtml

    @model MvcStudent.Models.StuModel

    @{
        ViewBag.Title = "Create";
    }

    <h2>Create</h2>

    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" typ

e="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>StuModel</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.name)
            @Html.ValidationMessageFor(model => model.name)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.addr)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.addr)
            @Html.ValidationMessageFor(model => model.addr)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.gen)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.gen)
            @Html.ValidationMessageFor(model => model.gen)
        </div>

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

@Html.Partial("_PartialGrid");

_PartialGrid.cshtml

    @model IEnumerable<MvcStudent.Models.StuModel>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th>
            name
        </th>
        <th>
            addr
        </th>
        <th>
            gen
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.addr)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.gen)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
        </td>
    </tr>
}

</table>
4

1 に答える 1

1

エラーは、知っておくべきことを示しています。もう一度見て

ディクショナリに渡されたモデル アイテムのタイプは 'System.Collections.Generic.List`1[MvcStudent.stu]' ですが、このディクショナリにはタイプ 'MvcStudent.Models.StuModel' のモデル アイテムが必要です。

タイプのオブジェクトをSystem.Collections.Generic.List`1[MvcStudent.stu]コントローラーからビューに渡しています。あなたのビューはタイプ のオブジェクトを期待していますMvcStudent.Models.StuModel

コントローラーをもう一度見てください-

public ActionResult create()
{
    return View(stdb.stus.ToList());
}

ビューを指定していないため、アクションの名前を使用して、ロードするビューを選択します。この場合はCreate. 「作成」ビューには、上部にこの行が含まれています

@model MvcStudent.Models.StuModel

これは、ビューをロードするためにその Type のオブジェクトを渡す必要があることを宣言します。

それはあなたが得ているエラーを説明しています-「作成」ビューと「リスト」ビューを混在させているように思えます。おそらく、それらを分離することを検討してください。

于 2013-03-15T16:15:25.580 に答える