2011-05-27 17 views
0

我需要做幾個分貝的事情,我寧願在一個單獨的文件中有擴展方法,而不是將它們全部放在cshtml文件中。從.CS文件內部訪問數據庫記錄,不能很好地工作

不過,我得到以下錯誤:

Compiler Error Message: CS0120: An object reference is required for the non-static field, method, or property 'UserOperations.GetFirstName(string)'

指向我這一行:

Line 165:     <li><a href="@Href("myaccount/account.cshtml")">Hi, @UserOperations.GetFirstName(WebSecurity.CurrentUserId)</a></li> 

我正在使用的代碼是:(CSHTML)

@if(WebSecurity.IsAuthenticated) 
       { 
        <li><a href="@Href("myaccount/account.cshtml")">Hi, @UserOperations.GetFirstName(WebSecurity.CurrentUserId.ToString())</a></li> 
       } 
       else 
       { 
        <li><a href="@Href("myaccount/Login.cshtml")">My Account</a> 

       <ul> 
        <li><a href="@Href("myaccount/Login.cshtml")">Sign In</a></li> 
        <li><a href="@Href("myaccount/Register.cshtml")" title="It's FREE!">Create Account</a></li> 
       </ul> 
       </li> 
      } 

And ... :(UserOperations.CS)

using System; 
using WebMatrix.WebData; 
using WebMatrix.Data; 
using System.Collections.Generic; 
using System.Web; 

/// <summary> 
/// User & Database-based operations in this file only. 
/// </summary> 
public class UserOperations 
{ 
    public string GetFirstName(string CurrentUserID) 
    { 
     WebSecurity.InitializeDatabaseConnection("eee", "www", "www", "www", true); 
     var database = Database.Open("OSF"); 
     var SelectQueryString = "SELECT FirstName FROM UserProfile WHERE FirstName = " + CurrentUserID; 
     var result = database.Query(SelectQueryString); 
     return result.ToString(); 
    } 
} 

我不明白錯誤在說什麼。我在C#桌面應用程序中始終這樣做有點東西,我不明白如何什麼我做錯了什麼?有人可以幫忙嗎?

謝謝!

+0

加油! - 你需要爲你的班級使用變量。由於這似乎是一個網站,您需要在正確的範圍內進行變化。 – 2011-05-27 15:14:20

+0

奇萊克斯花花公子,我只在前幾天開始使用剃刀/ WebMatrix – Lucifer 2011-05-27 15:23:10

回答

1

您沒有實例化該類,因此您需要將其生成爲static

public static class UserOperations 
{  
    public static string GetFirstName(string CurrentUserID)  
    { 

更典型的,但是,你將有一個User類,你會在你的控制器創建實例,並將其傳遞到模型。這將幫助您避免對您需要的每條信息進行謹慎的查詢。

您可能需要調查Repository Pattern

+0

糟糕。感謝您指出了這一點;我忘了實例化它。 – Lucifer 2011-05-27 15:13:24

1

USEROPERATIONS類應當是這個樣子

public static class UserOperations 
{ 
    public static string GetFirstName(this string CurrentUserID) 
    { 
     ... 
    } 
} 
+0

謝謝,@oleskii :) – Lucifer 2011-05-27 15:28:20

相關問題