2

複数のエンティティの編集をサポートするページを作成しました。
このページは次のように呼ばれます。http://localhost/Personnel/EditMultiple?id=2944&id=7

このページには、これらの担当者をグリッドに一覧表示するGridViewがあります。このグリッドは次のように定義されます。

<% Html.Telerik().Grid<Web.Models.PersonnelMiniVM>()
    .Columns(columns =>
    {
        columns.Bound(p => p.Name);
    })
    .DataBinding(d => d.Ajax().Select("_GetPersonnelByIds", "Personnel", new { personnelIds = string.Join(",", Model.PersonnelIds) }))
    .Pageable(page => page.PageTo(Model.Page))
    .Sortable(sorting => sorting.OrderBy(sortOrder => sortOrder.Add(p => p.Name)))
    .Render();
%>

しかし、Personnel Controllerに投稿されたURLを見ると、次のようになっています。

http://localhost/Personnel/_GetPersonnelByIds/2944%2c7?personnelIds=7%2C2944&Personnel-size=5

私が理解していないのは、なぜ2944%2c7が追加されているのかということです。これにより、URLが長くなりすぎると401エラーが発生します。

Global.asaxで定義されているルーティングは次のようになります。

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

これを解決する方法は?

4

1 に答える 1

3

これを参照してください:

http://www.telerik.com/community/forums/aspnet-mvc/grid/mvc3-grid-control-ajax-bound-select-url-has-extra-route-values.aspx

解決策は、次のようにidをクリアすることです。

.DataBinding(d => d.Ajax().Select("_GetPersonnelByIds", "Personnel", new { id= "", personnelIds = string.Join(",", Model.PersonnelIds) }))
于 2012-05-14T09:16:51.310 に答える