我在我的mvc应用程序中使用自定义配置文件类,但我无法在我的视图中访问属性。
这是一些代码
的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 :(得分:0)
helper类中的GetProfile方法应该声明为static
,以便以您使用的方式进行访问,否则您需要实例化一个ProfileCommon对象,然后在其上调用GetProfile方法。后者几乎肯定不是你想要的。
public static ProfileCommon GetProfile(string username)
{
...
}