1

Kendo UI ASP.Net MVC - Grid - Batch Edit を使用しています。

「保存」をクリックすると。データはデータベースに正常に保存されます。

しかし、「kendo.web.min.js」は「Microsoft JScript ランタイム エラー: 予期される ';'」というエラーをスローしています。

@model IEnumerable<EOL.RecOil.Models.ControllerActionViewModel>
@using Kendo.Mvc.UI;

<div>
@(Html.Kendo().Grid(Model)
    .Name("Grid")
    .Columns(columns =>
    {
    columns.Bound(p => p.ID).Visible(false);
    columns.Bound(p => p.ControllerName);
    columns.Bound(p => p.ActionName);
    columns.Bound(p => p.HasAccess);
    columns.Bound(p => p.UserAccessID).Visible(false);
    columns.Bound(p => p.ControllerID).Visible(false);
    columns.Bound(p => p.ActionID).Visible(false);
    })    
    .Filterable()
    .Groupable()
    .Editable(editable => editable.Mode(GridEditMode.InCell))
    .ToolBar(toolBar => { toolBar.Save(); })
    .DataSource(dataSource => dataSource
    .Ajax()
    .Batch(true)
    .Events(events => events.Error("error"))            
    .Update(update => update.Action("Edit","ControllerActions"))
    .ServerOperation(false)
    .Model(x =>
    {
    x.Id(p => p.ID);
    x.Field(p => p.ControllerName).Editable(false);
    x.Field(p => p.ActionName).Editable(false);
    x.Field(p => p.HasAccess).Editable(true);
    })
    )
)
</div>

[HttpPost]
public ActionResult Edit([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")] IEnumerable<ControllerActionViewModel> controllerActionViewModel)
{
            try
            {
                if (controllerActionViewModel != null && ModelState.IsValid)
                {
                    foreach (var item in controllerActionViewModel)


 {
                db.Database.ExecuteSqlCommand("SaveUserAccess @UserID,@ControllerID,@ActionID,@UserAccessID,@HasAccess",
                               new SqlParameter("UserID", item.UserID),
                               new SqlParameter("ControllerID", item.ControllerID),
                               new SqlParameter("ActionID", item.ActionID),
                               new SqlParameter("UserAccessID", item.UserAccessID),
                               new SqlParameter("HasAccess", item.HasAccess)
                               );
            }

        }
    }
    catch (Exception ex)
    {
        Helper.SaveError(ex.InnerException.InnerException.Message, "ControllerActions", "Edit");
        ModelState.AddModelError(string.Empty, ex.InnerException.InnerException.Message);
    }

    return Json(new[] { controllerActionViewModel }.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet);
}
4

1 に答える 1

4

今日の大部分をこの問題と格闘した結果、この問題に対する答えを発見したかもしれないと思います。

私のコードはあなたのものと非常によく似ていました。アクション メソッドの戻り値は次のようになりました。

return Json(new[] { viewmodel }.ToDataSourceResult(request, ModelState));

これにより、あなたが説明した正確なJavaScriptエラーが表示されました。多くのことを試した後、最終的にコードを正常に機能していた別のメソッドと比較したため、これに少し調整しました。

return Json(viewmodel.ToDataSourceResult(request, ModelState));

これは現在機能しており、私の MVC アプリケーションは JavaScript エラーをスローしなくなりました。

これが@Jigneshに役立つことを願っています。

于 2013-01-09T16:42:40.173 に答える