【问题标题】:MVC Common Profile ClassMVC 通用配置文件类
【发布时间】:2009-12-29 18:31:10
【问题描述】:

我在我的 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>

个人资料通用

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)”需要对象引用

有什么想法吗?

谢谢

【问题讨论】:

    标签: c# asp.net-mvc membership


    【解决方案1】:

    您的帮助类中的 GetProfile 方法应声明为 static 以便以您使用的方式访问,否则您需要实例化 ProfileCommon 对象,然后对其调用 GetProfile 方法。后者几乎肯定不是你想要的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 2011-12-19
      • 2018-03-19
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 2013-06-08
      相关资源
      最近更新 更多