从.CS文件中访问数据库记录,工作不太好
本文关键字:工作 记录 数据库 CS 文件 访问 | 更新日期: 2023-09-27 17:57:45
我需要做一些db的事情,我宁愿将扩展方法放在一个单独的文件中,也不愿将它们全部放在cshtml文件中。
但是,我得到以下错误:
编译器错误消息:CS0120:安需要对象引用非静态字段、方法或属性'UserOperations.GetFirstName(字符串)'
这让我想到了这条线:
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>
}
而且…:(用户操作.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#桌面应用程序中做这种事情,我不明白我是怎么做的或什么我做错了?有人能帮忙吗?
谢谢!
您没有实例化类,因此需要将其设置为静态。
public static class UserOperations
{
public static string GetFirstName(string CurrentUserID)
{
不过,更典型的情况是,您将有一个User
类,您将在控制器中创建它的实例,并将其传递给模型。这将帮助您避免对所需的每一条信息进行谨慎的查询。
您可能需要调查存储库模式。
您的UserOperations类应类似于此
public static class UserOperations
{
public static string GetFirstName(this string CurrentUserID)
{
...
}
}