将C#控制台应用程序转换为ASP.NET MVC应用程序

时间:2016-03-20 13:41:03

标签: c# asp.net-mvc methods

我在C#中有一个基本的控制台应用程序,可以将文件从一个位置复制到另一个位置。我试图将其转移到ASP.NET MVC应用程序,但我仍在学习存储我的方法的基本架构。我的印象是大多数方法都在控制器中作为ActionResults存储,但这是我开始感到困惑的地方。

我的问题:我在哪里放置我的c#方法/变量(控制器或模型?)以及调用该方法的最佳方法是什么。我目前正在通过视图调用它。

注意:

  1. 我在我的控制器中为copyFiles方法显示错误,指出'并非所有代码路径都返回值'。这不会显示在我的控制台版本中。我想知道是否需要在DisplayCustomer ActionResult下移动它。

  2. 我的DisplayCustomer视图在@copyFiles下的if语句中生成错误,说它在当前内容中不存在,这让我感到困惑,因为我在我使用的模型中定义了它。

  3. 如果这太复杂,我道歉。非常感谢你。

    **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);
                };
            }
    
        }
    }
    

1 个答案:

答案 0 :(得分:1)

我认为最好从头开始创建Console Application并将Web Project中的方法转移到新{{}},而不是将MVC Application转移到Console Application。 {1}}。我建议在Getting Started with Entity Framework 6 Code First using MVC 5上查看一个基本且有用的教程,其中有一个演示项目。希望这会有所帮助...