我在C#中有一个基本的控制台应用程序,可以将文件从一个位置复制到另一个位置。我试图将其转移到ASP.NET MVC应用程序,但我仍在学习存储我的方法的基本架构。我的印象是大多数方法都在控制器中作为ActionResults存储,但这是我开始感到困惑的地方。
我的问题:我在哪里放置我的c#方法/变量(控制器或模型?)以及调用该方法的最佳方法是什么。我目前正在通过视图调用它。
注意:
我在我的控制器中为copyFiles方法显示错误,指出'并非所有代码路径都返回值'。这不会显示在我的控制台版本中。我想知道是否需要在DisplayCustomer ActionResult下移动它。
我的DisplayCustomer视图在@copyFiles下的if语句中生成错误,说它在当前内容中不存在,这让我感到困惑,因为我在我使用的模型中定义了它。
如果这太复杂,我道歉。非常感谢你。
**Model:**
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MvcCustomer.Models
{
public class Customer
{
public string SourceSystem { get; set; }
public string Environment { get; set; }
public void copyFiles(int numberOfFiles)
{
List<string> files = System.IO.Directory.GetFiles(@"C:\Users\acars\Desktop\Test", "*").ToList();
IEnumerable<string> filesToCopy = files.Where(file => file.Contains("Test_File")).Take(10);
foreach (string file in filesToCopy)
{
// here we set the destination string with the file name
string destfile = @"C:\Users\acars\Desktop\RenameFolder\" + System.IO.Path.GetFileName(file);
// now we copy the file to that destination
System.IO.File.Copy(file, destfile, true);
};
}
}
}
**View:**
@model MvcCustomer.Models.Customer
@{
ViewBag.Title = "DisplayCustomer";
}
<h2>Tests to be executed:</h2>
<body>
<div>
The Source System is @Model.SourceSystem <br />
The Environment is @Model.Environment <br />
</div>
@{var SourceSystem=Model.SourceSystem; }
@if (SourceSystem == "TestSourceSystem")
{
@copyFiles(10); //This is where my error is
}
</body>
**Controller:**
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcCustomer.Models;
using MvcCustomer.Controllers;
namespace MvcCustomer.Controllers
{
public class CustomerController : Controller
{
public ActionResult DisplayCustomer()
{
Customer obj = new Customer();
obj.SourceSystem = Request.Form["SourceSystem"];
obj.Environment = Request.Form["Environment"];
return View(obj);
}
public ActionResult copyFiles(int numberOfFiles)
{
List<string> files = System.IO.Directory.GetFiles(@"C:\Users\acars\Desktop\ProductionBEARS", "*").ToList();
IEnumerable<string> filesToCopy = files.Where(file => file.Contains("Test_File")).Take(10);
foreach (string file in filesToCopy)
{
// here we set the destination string with the file name
string destfile = @"C:\Users\acars\Desktop\RenameFolder\" + System.IO.Path.GetFileName(file);
// now we copy the file to that destination
System.IO.File.Copy(file, destfile, true);
};
}
}
}
答案 0 :(得分:1)
我认为最好从头开始创建Console Application
并将Web Project
中的方法转移到新{{}},而不是将MVC Application
转移到Console Application
。 {1}}。我建议在Getting Started with Entity Framework 6 Code First using MVC 5上查看一个基本且有用的教程,其中有一个演示项目。希望这会有所帮助...