我尝试创建此函数(和其他函数)并将其放在我的项目中的单独的类文件中,该文件位于“/Helpers/UploadFiles.cs”下
namespace Artikelhantering.Helpers
{
public class UploadFiles
{
private void EnsureDirectoriesExist(string SKU)
{
// if the directory doesn't exist - create it.
if (!System.IO.Directory.Exists("//servername/wwwroot/prodimg/" + SKU))
{
System.IO.Directory.CreateDirectory("//servername/wwwroot/prodimg/" + SKU);
}
}
}
然后在控制器中我添加了使用Artikelhantering.Helpers; ,它还被添加到web.config文件的命名空间部分以及global.asa.cx。
然后我想我可以从控制器中的ActionResult中调用它,就像这样
[ChildActionOnly]
public ActionResult _EnumerateFolder(string SKU)
{
// create directory if it does not exist
EnsureDirectoriesExist(SKU);
ViewBag.SKU = SKU;
var folder = Directory.EnumerateFiles("//servername/wwwroot/prodimg/" + SKU);
return View(folder);
}
但我得到的只是:
错误2当前上下文中不存在名称“EnsureDirectoriesExist”
尝试将其写为UploadFiles.EnsureDirectoriesExist();但这也不起作用。我如何调用这些方法而不将它们全部放在同一个文件中?我想更好地组织这个。
答案 0 :(得分:5)
该方法是私有的。您无法访问其他类的私有成员。
此处还有其他一些问题:
UploadFiles.EnsureDirectoryExists()
来调用它,则需要将其设为类方法(static
)。1)的示例代码:
UploadFiles uf = new UploadFiles();
uf.EnsureDirectoryExists();
2)的示例代码:
public class UploadFiles
{
public static void EnsureDirectoriesExist(string SKU)
{
// if the directory doesn't exist - create it.
if (!System.IO.Directory.Exists("//servername/wwwroot/prodimg/" + SKU))
{
System.IO.Directory.CreateDirectory("//servername/wwwroot/prodimg/" + SKU);
}
}
}
我还建议您使用Google阅读C#教程,该教程为您提供有关哪些类以及如何使用它们的信息。
答案 1 :(得分:1)
首先,将EnsureDirectoriesExist
的访问修饰符更改为public
尝试使用以下代码更改ActionResult _EnumerateFolder
方法:
public ActionResult _EnumerateFolder(string SKU)
{
// create directory if it does not exist
new UploadFiles.EnsureDirectoriesExist(SKU);
ViewBag.SKU = SKU;
var folder = Directory.EnumerateFiles("//servername/wwwroot/prodimg/" + SKU);
return View(folder);
}
答案 2 :(得分:1)
所以:
public static class Helper
{
public static void EnsureDirectoriesExist(string SKU)
{
...
}
}
答案 3 :(得分:0)
将您的课程标记为静态,然后尝试:
public static class UploadFiles
{
public void EnsureDirectoriesExist(string SKU)
{
//your code
}
}
然后:
public ActionResult _EnumerateFolder(string SKU)
{
UploadFiles.EnsureDirectoriesExist(SKU);
//your code
}
答案 4 :(得分:0)
使您的目录方法公开和静态。然后你可以这样称呼它
Artikelhantering.Helpers::UploadFiles.EnsureDirectoriesExist(SKU);
如果您无法更改签名...您可以创建一个公共包装器方法并以相同的方式调用它。如果你不能使方法成为静态的,那么你应该首先创建一个类的实例,最后调用新的公共包装器方法。