2014-09-15 2 views
1

Недавно я перенес веб-приложение из Telerik Mvc в пользовательский интерфейс Kendo, , но я столкнулся с проблемой, что я не слишком уверен, как изменить с . вы узнали больше и привыкли к пользовательскому интерфейсу Kendo на прошлой неделе.Вызов неоднозначен между следующими способами: Kendo UI

Вот проблема, с которой я сталкиваюсь. Состояния ошибки:

The call is ambiguous between the following methods or 
properties: 'System.Linq.Enumerable.Where<Model_OpenAccess_AssetMgr.Custody> 
(System.Collections.Generic.IEnumerable<Model_OpenAccess_AssetMgr.Custody>, 
System.Func<Model_OpenAccess_AssetMgr.Custody,bool>)' 
and 'System.Linq.Enumerable.Where<Model_OpenAccess_AssetMgr.Custody> 
(System.Collections.Generic.IEnumerable<Model_OpenAccess_AssetMgr.Custody>, 
System.Func<Model_OpenAccess_AssetMgr.Custody,bool>)' 

И код, где происходит ошибка ниже:

@model List<Model_OpenAccess_AssetMgr.Custody> 

<div id="AssetDescription" class="detailContainer detailContainer3"> 
<header class="sectionheader" > Custodians </header> 
@(Html.Kendo().Grid(Model.Where(x=>x.Active==true)) 
     .Name("grd_Admin_Custodians") 
     .HtmlAttributes(new { @class = "ItemsGrid" }) 
     .ToolBar(commands => commands.Create()) 
     .DataSource(dataSource => dataSource 
      .Ajax() 
      .Model(model => model.Id(o => o.Custody_PK)) 
     ) 
     .DataSource(dataSource => dataSource 
      .Server() 
      .Read(read => read.Action("AdminHome", "Admin", new { view ="Custodies" })) 
      .Create("Create", "Admin", new { id = 0, view = "Custodies" }) 
      .Update("Save", "Admin", new { view = "Custodies" }) 
      .Destroy("Delete", "Admin", new { view = "Custodies" })) 
     .Columns(columns => 
       { 
        columns.Bound(o => o.Custody_Name).Width(200); 
        columns.Bound(o => o.Custody_Dept).Width(150); 
        columns.Bound(o => o.Custody_eraider).Width(130); 
        columns.Bound(o => o.Custody_Type).Width(130); 
        columns.Bound(o => o.Custody_Email).Width(220); 
        { 
         commands.Edit(); 
         commands.Destroy(); 
        }).Width(210); 
       } 
     ) 
     .Scrollable(scrolling => scrolling.Enabled(true)} 
     .Scrollable(scrolling => scrolling.Height(550)) 
     .Pageable() 
     .Sortable() 
    ) 
</div> 
) 

(Model.Where (х => x.Active == истина) является то, что в настоящее время попадает.

Теперь у меня есть предупреждение, перечисленное в верхней части под

списка @model, что гласит:

ASP.NET runtime error: Method not found 'Void 
System.Web.Razor.RazorEngineHost.set_EnableInstrumentation(Boolean)' 

Я уверен, что взаимосвязан с ошибкой, которую я получаю.

Нужно ли как-то изменить инструкцию Model.Where()?

Как вы думаете, что я должен использовать вместо пользовательского интерфейса Kendo?

В другой записке Недавно я обновил этот проект веб-приложений от MVC3 до MVC4 , поэтому не знаю, имеет ли это какое-либо отношение к этому или нет. Но я хотел пойти и сообщить об этом факте.

Я просмотрел другие ответы, но, похоже, никто не спросил об этом для пользовательского интерфейса Kendo.

Спасибо!

ответ

1

Мне кажется, что вы смешиваете визуализацию на стороне сервера и рендеринг Ajax. Если вы используете рендеринг на стороне сервера вашей сетки, вы должны выполнить фильтрацию Where (x => x.Active == true) в вашей модели (предпочтительно) или в Action Controller (менее идеальный), который использует это представление. Не в представлении.

При использовании Ajax для получения данных, скажем, для выгружаемога сетки, ваш источнику данных необходим метод чтения, как

.Read(read => read.Action("Custodians", "Admin")) 
+0

Да, у меня есть .read (читайте => read.Action («Хранитель», «Admin»)) перечислены ниже в разделе «...» кода. Я вполне могу смешивать визуализацию на стороне сервера и рендеринг Ajax. Но если это правда, что вы предлагаете мне удалить или изменить, чтобы решить проблему. Я обновил свое оригинальное сообщение, которое теперь включает полный код, чтобы вы могли лучше понять, с чем я работаю. – Ogreintel

Смежные вопросы