In my project i try to add grid but its showing following error 'HtmlHelper>' does not contain a definition for 'Grid' and the best extension method overload 'MvcGridExtensions.Grid(IHtmlHelper, IEnumerable)' requires a receiver of type 'IHtmlHelper'
Code:
@model IEnumerable<SCM_MVC.Models.XXXXX>
@using NonFactors.Mvc.Grid;
@(Html
.Grid(Model)
.Build(columns =>
{
columns.Add(model => model.select).Titled("Name");
columns.Add(model => model.Surname).Titled("Surname");
columns.Add(model => model.MaritalStatus).Titled("Marital status");
columns.Add(model => model.Age).Titled("Age");
columns.Add(model => model.Birthday).Titled("Birthday").Formatted("{0:d}");
columns.Add(model => model.IsWorking).Titled("Employed");
})
.Empty("No data found")
.Filterable()
.Sortable()
.Pageable()
)
What am doing wrong here?
The problem occurred because NonFactors.Grid.Mvc6
package uses IHtmlHelper
interface derived from Microsoft.AspNetCore.Mvc.Rendering
namespace, while the grid should use HtmlHelper
class from System.Web.Mvc
namespace, hence the package is incompatible with MVC 5.
I suggest you to uninstall NonFactors.Grid.Mvc6
package (since it designed for ASP.NET Core MVC) and use NonFactors.Grid.Mvc5
package instead, by using Package Manager or console command:
Uninstall-Package NonFactors.Grid.Mvc6
Install-Package NonFactors.Grid.Mvc5
Note:
You can compare the contents of Grid
extension method in MVC 5 and Core MVC version, which proves different namespace usage.
Related issue: