0

Telerik グリッドを使用したフォームがあります。グリッド ツールバー内に、ポップアップ ウィンドウを開いて新しいレコードを挿入するカスタム ボタンがあります。

ウィンドウ内のサーバー/クライアント検証を使用したポップアップフォーム - 例に従い、シナリオに合わせて変更しました。ただし、アプリケーションを実行すると、次のエラーが発生します

ディクショナリに渡されたモデル アイテムは「Telerik.Web.Mvc.GridModel」タイプですが、このディクショナリには「Web.Models.OwnerViewModel」タイプのモデル アイテムが必要です。

以下は、グリッドをホストしているビューからの抜粋です

@using Telerik.Web.Mvc.UI
@{
   ViewBag.Title = "Owner Listing";
}

@model Web.Models.OwnerViewModel
@{  Html.Telerik().Window()
    .Name("Window")
    .Title("Add New Owner")
    .Content(@<text>
        @using (Html.BeginForm("Create", "Owner", FormMethod.Post, new { id = "AddNewOwnerForm" }))
        {
            @Html.LabelFor(model => model.FullName)
            @Html.EditorFor(model => model.FullName)

            @Html.LabelFor(model => model.Telephone)
            @Html.EditorFor(model => model.Telephone)
            <div class="form-actions">
                <button type="submit" class="t-button t-state-default">Save</button>
            </div>
        }
        </text>)
    .Width(400)
    .Draggable(true)
    .Modal(true)
    .Visible(false)
    .Render();
}

<div>
    @(Html.Telerik().Grid<Web.Models.OwnerViewModel>()
    .Name("Vehicles")
    .ToolBar(commands => commands.Custom()
        .Action("Create", "Owner")
        .Name("btnAddNewOwner")
        .Text("Add Vehicle")
        .HtmlAttributes(new { id = "btnAddNewOwner" })
     )
    .DataKeys(keys => keys.Add(v => v.Id).RouteKey("Id"))
    .Columns(columns =>
    {
        columns.Command(cmd =>
        {
            cmd.Edit().ButtonType(GridButtonType.Image);
        }).Width(40);
        columns.Bound(v => v.FullName).Width(150);
        columns.Bound(v => v.Telephone).Width(150);
        columns.Bound(v => v.Address).Width(150);
    })
    .DataBinding(dataBinding => dataBinding.Ajax()
        .Select("Index", "Owner")
        .Update("Edit", "Owner"))
    .Pageable(paging => paging.PageSize(10))
    .Scrollable()
    .Filterable()
    .Sortable()
    )
    )
</div>

以下は、グリッドのコントローラー コードです。

    [GridAction]
    public ActionResult Index()
    {
        var owners = _ownerService.ListAll();        
        return View(new GridModel( owners ));
    }

以下はCreateのコントローラコードです

    public PartialViewResult Create()
    {
        SetSelectionLists();
        var model = new OwnerViewModel();
        return PartialView( "Create", model);
    }

私はstackoverflowで同様の質問を見てきましたが、私が直面している問題に対処していないようです。正しい方向への助けや指針をいただければ幸いです。

4

1 に答える 1

0

ビュー作成のモデルを GridModel タイプに設定し、そのアクションで GridModel に戻す必要があります

于 2012-07-22T16:45:40.467 に答える