我是MVC應用程序開發新手,嘗試使用MVC Grid組件。如該鏈路示出,我有用戶模型:使用MVC Grid組件的無效參數組件?
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;
}
}
}
}
}
接着我有控制器(〜/控制器/ AdminController.cs):
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using PROJECT.Models;
using PROJECT.DAL;
using System.IO;
using PROJECT.Helper;
using PagedList;
namespace PRISM.Controllers
{
[CustomizedAuthorizeAttribute]
public class AdminController : Controller
{
private ProjectContext db = new ProjectContext();
private static string profPicBlobContainer = "ProfilePicture";
private BlobHelper blobHelper = new BlobHelper();
//
// GET: /Admin/
public ActionResult ViewUsers()
{
return View(db.Users.ToList());
}
}
}
然而,當我加載達(本地主機:12345 /管理/ 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
〜/查看/管理/ ViewUsers.cs:
@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)
盡我所知道的,我不是爲了它來訪問個別型號提供了一個正確的「模型」收集到MVC網格物業等
任何人有我想怎麼解決這個想法?鏈接的例子是我迄今爲止唯一能找到的例子。
編輯:
我得到的視圖通過在頂部作爲IEnum指定它呈現(如下所示)。
現在,在我的第一個@Html.Grid(Model)
部分中,我可以聲明特定的列以及設置其各自的網格屬性。在第二部分@Html.Grid(Model).AutoGenerateColumns()
中,我使用GridColumn Annotation來指定屬性,然後AutoGenerateColumns()
按照模型中所列的降序正確地拉入它們。
1問題我與AutoGenerateColumns()
雖然是我無法弄清楚如何隱藏特定的模型屬性,我不希望顯示。任何人對此有任何想法?如果可能的話,我很樂意使用AutoGenerateColumns()
來減少編碼,並且能夠編輯我的模型中的所有內容。
EDIT2:使用[NotMappedColumn]
網格數據註釋找到答案。 Link
@using GridMvc.Html
@model IEnumerable<PROJECT.Models.Users>
@{
ViewBag.Title = "View Users";
Layout = "~/Views/Shared/_LayoutAdmin.cshtml";
}
@using 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).Titled("Enabled").SetWidth(50).Sortable(true);
columns.Add(foo => foo.Name).Titled("Name").SetWidth(100).Sortable(true);
columns.Add(foo => foo.Position).Titled("Position").SetWidth(50).Sortable(true);
columns.Add(foo => foo.Email).Titled("Email").SetWidth(100).Sortable(true);
columns.Add(foo => foo.PhoneNumber).Titled("Phone#").SetWidth(30).Sortable(true);
columns.Add(foo => foo.ForumUsername).Titled("Forum Username").SetWidth(50).Sortable(true);
columns.Add(foo => foo.RegisteredDate).Titled("Reg. Date").SetWidth(50).Sortable(true);
columns.Add(foo => foo.LastVisitDate).Titled("Last Visited").SetWidth(50).Sortable(true);
columns.Add(foo => foo.ReceiveSystemEmails).Titled("Rec. Sys Emails").SetWidth(50).Sortable(true);
}).WithPaging(5)
@Html.Grid(Model).AutoGenerateColumns()
〜/型號/用戶:
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;
}
}
}
}
}
感謝您迴應!我將它設置爲一個IEnumerable(在Grid MVC網站的一個隨機討論頁面中找到它),它工作。現在我試圖解決一個新的行爲,詳見我的上面的編輯。 –
你正在移動這個問題的目標職位。如果答案解決了您的問題,您應該將其標記爲答案。 AutoGenerateColumns不允許您隱藏任何列。 – schaefea
對不起,將標題改回。所以如果我使用'AutoGenerateColumns()',它會顯示每個模型屬性,無法隱藏特定的屬性? –