2009-12-29 70 views
0

在我的mvc應用程序中使用自定義配置文件類,但我無法訪問我的視圖中的屬性。MVC Common Profile Class

下面是一些代碼

的Web.config

<profile inherits="ValuePack.Helpers.ProfileCommon" defaultProvider="AspNetSqlProfileProvider" automaticSaveEnabled="false" enabled="true"> <providers> 
<clear /> 
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="_427388_valuepackConnectionString" applicationName="/" /> 
</providers> 
</profile> 

的ProfileCommon

using System.Web.Profile; 
using System.Web; 
using System.Web.Security; 

namespace ValuePack.Helpers 
{ 
public class ProfileCommon : ProfileBase 
{ 
    public virtual string company 
    { 
     get { return ((string)(this.GetPropertyValue("Company"))); } 
     set { this.SetPropertyValue("Company", value); } 
    } 

    public virtual ProfileCommon GetProfile(string username) 
    { 
     return ((ProfileCommon)(ProfileBase.Create(username))); 
    } 

} 
} 

控制器

public ActionResult Members() 
{ 
List<aspnet_User> members = new List<aspnet_User>(dr.GetAllMembers()); 
return View(members); 
} 

查看

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Admin.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<ValuePack.Models.aspnet_User>>" %> 

<h2>Members</h2> 
<table> 
<tr> 
    <th>UserId</th> 
    <th>Company<th> 
    <th>LastActivityDate</th> 
    <th></th> 
</tr> 
<% foreach (var item in Model) 
    { %> 
<tr> 
    <td><%= Html.Encode(item.UserId) %></td> 
    <td><%= ValuePack.Helpers.ProfileCommon.GetProfile(item.UserName).company %></td> 
    <td><%= Html.Encode(String.Format("{0:g}", item.LastActivityDate)) %></td> 
    <td><%= Html.ActionLink("View", "Details", new { id=item.UserId })%></td> 
</tr> 
<% } %> 
</table> 

正如你可以看到我嘗試在我看來訪問配置文件屬性,但它引發以下錯誤......

CS0120:一個對象引用需要非靜態字段,方法,或屬性'ValuePack.Helpers.ProfileCommon.GetProfile(string)'

任何想法?

感謝

回答

0

的GetProfile方法助手類應該被宣佈爲了static您正在使用的方式來訪問,否則你將需要實例化的ProfileCommon對象,然後調用GetProfile方法就可以了。後者幾乎肯定不是你想要的。

public static ProfileCommon GetProfile(string username) 
{ 
    ... 
}