Доступ к записям базы данных из файла .CS, не очень хорошо работает - PullRequest
0 голосов
/ 27 мая 2011

Мне нужно сделать несколько вещей в БД, и я бы предпочел иметь методы расширения в отдельном файле, а не все в файле cshtml.

Но я получаю следующую ошибку:

Сообщение об ошибке компилятора: CS0120: ссылка на объект требуется для нестатического поля, метода или свойства '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>
            }

И ...: (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();
    }
}

Iне понимаю, что пытается сказать ошибка.Я все время так делаю в приложениях C # Desktop, я не понимаю, как или , что Я делаю неправильно?Может кто-нибудь помочь, пожалуйста?

Спасибо!

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Ваш UserOperations класс должен выглядеть примерно так

public static class UserOperations
{
    public static string GetFirstName(this string CurrentUserID)
    { 
      ...
    }
}
1 голос
/ 27 мая 2011

Вы не создаете экземпляр класса, поэтому вам нужно сделать его статическим .

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

Более типично, однако, у вас будет класс User, для которого вы создадите экземпляр в вашем контроллере, и передадите его своей модели. Это поможет вам не выполнять дискретные запросы для каждой необходимой вам информации.

Возможно, вы захотите изучить шаблон репозитория .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...