.net 使用MVC网格组件的参数无效?

.net 使用MVC网格组件的参数无效?,.net,asp.net-mvc-4,view,entity-framework-4,mvcgrid,.net,Asp.net Mvc 4,View,Entity Framework 4,Mvcgrid,我是MVC应用程序开发新手,正在试用该组件。如链接所示,我有我的用户型号: using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using PROJECT.Helper; namespace PROJECT.Models { public class

我是MVC应用程序开发新手,正在试用该组件。如链接所示,我有我的用户型号:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using PROJECT.Helper;

namespace PROJECT.Models
{
    public class Users
    {
        public int Id { get; set; }

        [Required]
        [Display(Name = "Email")]
        [DataType(DataType.EmailAddress)]
        public string Email { get; set; }

        [Required]
        [Display(Name = "Password")]
        [DataType(DataType.Password)]
        public string Password { get; set; }

        [Display(Name = "Name")]
        public string Name { get; set; }

        [Display(Name = "Forum Username")]
        public string ForumUsername { get; set; }

        [Display(Name = "Last Date Visited")]
        public DateTime LastVisitDate { get; set; }

        public Boolean RememberMe { get; set; }

        public int? OrganizationId { get; set; }

        [Display(Name="Position")]
        public string Position { get; set; }

        [Display(Name = "Profile Picture")]
        public string ProfilePictureSrc { get; set; }

        //[DataType(DataType.PhoneNumber)]
        [DisplayFormat(DataFormatString = "{0:(###) ###-####}", ApplyFormatInEditMode = true)]
        public string PhoneNumber { get; set; }

        public virtual string ProfilePictureUrl
        {
            get
            {

                //TODO: update the folder when it isn't null to the blob location
                if (this.ProfilePictureSrc == null)
                {
                    return "/Content/Images/userThumb.png";
                }
                else
                {
                    BlobHelper helper = new BlobHelper();
                    string url = helper.getImageUrl(this.ProfilePictureSrc, "profilepicture");

                    return url;
                }
            }
        }
    }
}
接下来是我的控制器(~/Controllers/AdminController.cs):

但是,当我加载(localhost:12345/Admin/ViewUsers)时,我收到:

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0411: The type arguments for method 'GridMvc.Html.GridExtensions.Grid<T>(System.Web.Mvc.HtmlHelper, System.Collections.Generic.IEnumerable<T>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.


Line 9:  @using GridMvc.Html
Line 10: 
Line 11: @Html.Grid(Model).Columns(columns =>
Line 12:            {
Line 13:                  //columns.Add().Titled("Custom column title").SetWidth(110);


Source File: c:\ME\Project\Project\Views\Admin\ViewUsers.cshtml    Line: 11 
据我所知,我没有向MVC网格提供正确的“模型”集合,以便它访问单个模型属性等

有人知道我如何解决这个问题吗?链接的例子是我迄今为止唯一能找到的


编辑:

@using GridMvc.Html
@model PROJECT.Models.Users

@{
    ViewBag.Title = "View Users";
    Layout = "~/Views/Shared/_LayoutAdmin.cshtml";
}

@using GridMvc.Html

@Html.Grid(Model).Columns(columns =>
           {
                 //columns.Add().Titled("Custom column title").SetWidth(110);
                 columns.Add(Model.Name).Sortable(true);
           }).WithPaging(20)
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using PROJECT.Helper;
using GridMvc.DataAnnotations;

namespace PROJECT.Models
{
    [GridTable(PagingEnabled = true, PageSize = 5)]
    public class Users
    {
        public int Id { get; set; }

        [Display(Name = "Enable User")]
        [GridColumn(Title = "Enabled", SortEnabled = true, FilterEnabled = true, Width = "30")]
        public bool Enabled { get; set; }

        [Display(Name = "Name")]
        [GridColumn(Title = "Name", SortEnabled = true, FilterEnabled = true, Width = "50")]
        public string Name { get; set; }

        [Display(Name = "Position")]
        [GridColumn(Title = "Position", SortEnabled = true, FilterEnabled = true, Width = "50")]
        public string Position { get; set; }

        [Required]
        [Display(Name = "Email")]
        [DataType(DataType.EmailAddress)]
        [GridColumn(Title = "Email", SortEnabled = true, FilterEnabled = true, Width = "80")]
        public string Email { get; set; }

        //[DataType(DataType.PhoneNumber)]
        [DisplayFormat(DataFormatString = "{0:(###) ###-####}", ApplyFormatInEditMode = true)]
        [GridColumn(Title = "Phone #", SortEnabled = true, FilterEnabled = true, Width = "40", Format = "{0:(###)-###-####}")]
        public string PhoneNumber { get; set; }

        [Display(Name = "Forum Username")]
        [GridColumn(Title = "Forum Username", SortEnabled = true, FilterEnabled = true, Width = "30")]
        public string ForumUsername { get; set; }

        [GridColumn(Title = "Reg. Date", SortEnabled = true, FilterEnabled = true, Width = "40")]
        public DateTime RegisteredDate { get; set; }

        [Display(Name = "Last Date Visited")]
        [GridColumn(Title = "Last Visited", SortEnabled = true, FilterEnabled = true, Width = "40")]
        public DateTime LastVisitDate { get; set; }

        [Display(Name = "Receive System Emails")]
        [GridColumn(Title = "Rec. Sys Emails", SortEnabled = true, FilterEnabled = true, Width = "30")]
        public bool ReceiveSystemEmails { get; set; }

        [GridColumn(Title = "Remember User", SortEnabled = true, FilterEnabled = true, Width = "20")]
        public Boolean RememberMe { get; set; }

        [Required]
        [Display(Name = "Password")]
        [DataType(DataType.Password)]
        public string Password { get; set; }

        public int? OrganizationId { get; set; }

        [Display(Name = "Profile Picture")]
        [GridColumn(Title = "Profile Pic.", SortEnabled = true, FilterEnabled = true)]
        public string ProfilePictureSrc { get; set; }

        [ForeignKey("OrganizationId")]
        public virtual MemberOrganizations Organization { get; set; }

        public virtual SponsorOrganizations Sponsor { get; set; }
        public virtual ICollection<UserRoles> Roles { get; set; }

        public virtual string ProfilePictureUrl
        {
            get
            {

                //TODO: update the folder when it isn't null to the blob location
                if (this.ProfilePictureSrc == null)
                {
                    return "/Content/Images/userThumb.png";
                }
                else
                {
                    BlobHelper helper = new BlobHelper();
                    string url = helper.getImageUrl(this.ProfilePictureSrc, "profilepicture");

                    return url;
                }
            }
        }
    }
}
通过在顶部将视图指定为IEnum(如下所示),我获得了要渲染的视图

现在,在我的第一个
@Html.Grid(Model)
部分中,我可以声明要拉入的特定列,以及设置它们各自的网格属性。在第二部分中,
@Html.Grid(Model).AutoGenerateColumns()
,我使用指定属性,然后
AutoGenerateColumns()
按模型中列出的降序适当地将它们拉入

但是,我在使用AutoGenerateColumns()时遇到的一个问题是,我不知道如何隐藏我不希望显示的特定模型属性。有人对此有什么想法吗?如果可能的话,我想使用
AutoGenerateColumns()
来减少编码,并能够编辑模型本身中的所有内容

EDIT2:使用
[NotMappedColumn]
网格数据注释找到答案

@使用GridMvc.Html
@模型IEnumerable
@{
ViewBag.Title=“查看用户”;
Layout=“~/Views/Shared/\u LayoutAdmin.cshtml”;
}
@使用GridMvc.Html
@Html.Grid(Model).Columns(Columns=>
{
columns.Add().Encoded(false).Sanitized(false).SetWidth(30).RenderValueAs(o=>@Html.CheckBox(“checked”,false));
columns.Add(foo=>foo.Enabled).标题为(“Enabled”).SetWidth(50).可排序(true);
columns.Add(foo=>foo.Name).Titled(“Name”).SetWidth(100).Sortable(true);
columns.Add(foo=>foo.Position).标题为(“Position”).SetWidth(50).可排序(true);
columns.Add(foo=>foo.Email).标题为(“Email”).SetWidth(100).可排序(true);
columns.Add(foo=>foo.PhoneNumber).标题为(“Phone#”).SetWidth(30).可排序(true);
columns.Add(foo=>foo.ForumUsername).标题为(“论坛用户名”).SetWidth(50).可排序(true);
columns.Add(foo=>foo.RegisteredDate).Titled(“Reg.Date”).SetWidth(50).Sortable(true);
columns.Add(foo=>foo.LastVisitDate).标题为(“上次访问”).SetWidth(50).可排序(true);
columns.Add(foo=>foo.ReceiveSystemEmails).标题为(“Rec.sysemails”).SetWidth(50).可排序(true);
}).带分页功能(5)
@Html.Grid(Model.AutoGenerateColumns())
~/Models/用户:

@using GridMvc.Html
@model PROJECT.Models.Users

@{
    ViewBag.Title = "View Users";
    Layout = "~/Views/Shared/_LayoutAdmin.cshtml";
}

@using GridMvc.Html

@Html.Grid(Model).Columns(columns =>
           {
                 //columns.Add().Titled("Custom column title").SetWidth(110);
                 columns.Add(Model.Name).Sortable(true);
           }).WithPaging(20)
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using PROJECT.Helper;
using GridMvc.DataAnnotations;

namespace PROJECT.Models
{
    [GridTable(PagingEnabled = true, PageSize = 5)]
    public class Users
    {
        public int Id { get; set; }

        [Display(Name = "Enable User")]
        [GridColumn(Title = "Enabled", SortEnabled = true, FilterEnabled = true, Width = "30")]
        public bool Enabled { get; set; }

        [Display(Name = "Name")]
        [GridColumn(Title = "Name", SortEnabled = true, FilterEnabled = true, Width = "50")]
        public string Name { get; set; }

        [Display(Name = "Position")]
        [GridColumn(Title = "Position", SortEnabled = true, FilterEnabled = true, Width = "50")]
        public string Position { get; set; }

        [Required]
        [Display(Name = "Email")]
        [DataType(DataType.EmailAddress)]
        [GridColumn(Title = "Email", SortEnabled = true, FilterEnabled = true, Width = "80")]
        public string Email { get; set; }

        //[DataType(DataType.PhoneNumber)]
        [DisplayFormat(DataFormatString = "{0:(###) ###-####}", ApplyFormatInEditMode = true)]
        [GridColumn(Title = "Phone #", SortEnabled = true, FilterEnabled = true, Width = "40", Format = "{0:(###)-###-####}")]
        public string PhoneNumber { get; set; }

        [Display(Name = "Forum Username")]
        [GridColumn(Title = "Forum Username", SortEnabled = true, FilterEnabled = true, Width = "30")]
        public string ForumUsername { get; set; }

        [GridColumn(Title = "Reg. Date", SortEnabled = true, FilterEnabled = true, Width = "40")]
        public DateTime RegisteredDate { get; set; }

        [Display(Name = "Last Date Visited")]
        [GridColumn(Title = "Last Visited", SortEnabled = true, FilterEnabled = true, Width = "40")]
        public DateTime LastVisitDate { get; set; }

        [Display(Name = "Receive System Emails")]
        [GridColumn(Title = "Rec. Sys Emails", SortEnabled = true, FilterEnabled = true, Width = "30")]
        public bool ReceiveSystemEmails { get; set; }

        [GridColumn(Title = "Remember User", SortEnabled = true, FilterEnabled = true, Width = "20")]
        public Boolean RememberMe { get; set; }

        [Required]
        [Display(Name = "Password")]
        [DataType(DataType.Password)]
        public string Password { get; set; }

        public int? OrganizationId { get; set; }

        [Display(Name = "Profile Picture")]
        [GridColumn(Title = "Profile Pic.", SortEnabled = true, FilterEnabled = true)]
        public string ProfilePictureSrc { get; set; }

        [ForeignKey("OrganizationId")]
        public virtual MemberOrganizations Organization { get; set; }

        public virtual SponsorOrganizations Sponsor { get; set; }
        public virtual ICollection<UserRoles> Roles { get; set; }

        public virtual string ProfilePictureUrl
        {
            get
            {

                //TODO: update the folder when it isn't null to the blob location
                if (this.ProfilePictureSrc == null)
                {
                    return "/Content/Images/userThumb.png";
                }
                else
                {
                    BlobHelper helper = new BlobHelper();
                    string url = helper.getImageUrl(this.ProfilePictureSrc, "profilepicture");

                    return url;
                }
            }
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.ComponentModel.DataAnnotations;
使用System.ComponentModel.DataAnnotations.Schema;
使用PROJECT.Helper;
使用GridMvc.DataAnnotations;
名称空间项目.模型
{
[GridTable(PaginEnabled=true,PageSize=5)]
公共类用户
{
公共int Id{get;set;}
[显示(Name=“启用用户”)]
[GridColumn(Title=“Enabled”,SortEnabled=true,FilterEnabled=true,Width=“30”)]
已启用公共bool的{get;set;}
[显示(Name=“Name”)]
[GridColumn(Title=“Name”,SortEnabled=true,FilterEnabled=true,Width=“50”)]
公共字符串名称{get;set;}
[显示(Name=“Position”)]
[GridColumn(Title=“Position”,SortEnabled=true,FilterEnabled=true,Width=“50”)]
公共字符串位置{get;set;}
[必需]
[显示(Name=“电子邮件”)]
[数据类型(数据类型.电子邮件地址)]
[GridColumn(Title=“Email”,SortEnabled=true,FilterEnabled=true,Width=“80”)]
公共字符串电子邮件{get;set;}
//[数据类型(数据类型.电话号码)]
[DisplayFormat(DataFormatString=“{0:(###################),ApplyFormatInEditMode=true]
[GridColumn(Title=“Phone#)”,sortedEnabled=true,FilterEnabled=true,Width=“40”,Format=“{0:(###)-##-###]]
公共字符串PhoneNumber{get;set;}
[显示(Name=“论坛用户名”)]
[GridColumn(Title=“论坛用户名”,SortEnabled=true,FilterEnabled=true,Width=“30”)]
公用字符串ForumUsername{get;set;}
[GridColumn(Title=“Reg.Date”,SortEnabled=true,FilterEnabled=true,Width=“40”)]
公共日期时间注册数据{get;set;}
[显示(Name=“上次访问日期”)]
[GridColumn(Title=“上次访问”,SortEnabled=true,FilterEnabled=true,Width=“40”)]
公共日期时间LastVisitDate{get;set;}
[显示(Name=“接收系统电子邮件”)]
[GridColumn(Title=“Rec.Sys Emails”,sortednabled=true,FilterEnabled=true,Width=“30”)]
public bool ReceiveSystemEmails{get;set;}
[GridColumn(Title=“记住用户”,SortEnabled=true,FilterEnabled=true,Width=“20”)]
公共布尔记忆{get;set;}
[必需]
[显示(Name=“密码”)]
[数据类型(数据类型.密码)]
公共字符串密码{get;set;}
公共int?组织ID{get;set;}
[显示(Name=“个人资料图片”)]
[GridColumn(Title=“Profile Pic.”,sortedEnabled=true,FilterEnabled=true]
公共字符串配置文件PictureSRC{get;set;}
[外键(“组织ID”)]
公共虚拟成员组织{get;set;}
公共虚拟赞助商组织赞助商{get;set;}
公共虚拟ICollection角色{get;set;}
公共虚拟字符串配置文件
{
得到
{
@using GridMvc.Html
@model List<PROJECT.Models.User>

@{
    ViewBag.Title = "View Users";
    Layout = "~/Views/Shared/_LayoutAdmin.cshtml";
}

@Html.Grid(Model).Columns(columns =>
{
    columns.Add(Model.Name).Sortable(true);
}).WithPaging(20)