如何将MVC视图添加到现有的ASP.NET应用程序中?

时间:2016-03-23 16:54:03

标签: asp.net asp.net-mvc

我已被指派使用MVC重写一些现有的ASP.NET页面。在完成这项任务之前,我完全没有受过MVC的教育。

我正在处理的页面是简单的报告,它接受来自用户的参数,将参数传递给存储过程(SQL Server)并返回显示在网页上的一组数据。

在我到达这个项目之前,之前的团队成员一直在将这些页面转换为MVC。他在我到达之前离开了。现在我被指派继续将这些页面转换为MVC的任务。

我已经在W3schools和Channel 9上完成了一些MVC教程,这些对我来说很有意义。我能够毫无困难地启动并运行这些简单的教程应用程序。但是我在转换这些真实的'时遇到了很多麻烦。页面到MVC。

我说"转换",但我的意思是我只留下现有的网页并建立一个新的MVC"页面"模仿现有页面的行为。

我一直在假设我可以创建一个新控制器,然后从新控制器构建一个新视图,然后运行我的应用程序并通过键入它关联导航到新视图URL到浏览器的地址栏。但是当我尝试这个时,我得到了404错误。

我的团队中没有其他人对MVC足够熟悉,可以给我任何建议。我不知道如何解决这种情况。我会尽可能多地提供有关我正在进行的项目的具体信息,我只是不确定目前提供的详细信息。

总而言之,我现在要求的是如何在现有应用程序中创建新视图,以及如何在我尝试导航到应用程序时成功显示视图#&# 39; s URL。

感谢。

编辑:

我开始使用一个非常简单的控制器,只是为了看看我是否可以让应用程序显示其关联的视图。除了显示其相关视图之外,控制器并不意味着做任何事情。这是代码:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Web;  
using System.Web.Mvc;  

namespace TSS.Controllers  
{  
    public class Tim_Dev_Controller : Controller. 
    {  
        //  
        // GET: /Tim_Dev_/  

        public ActionResult Index()  
        {  
            return View();  
        }  

        public ActionResult Test()  
        {  
            return View();  
        }  

    }  
}  

编辑1.1: 以下是相应视图的代码:

@{

ViewBag.Title = "Index";

Layout = "~/Views/Shared/_Layout.cshtml";

}

<h2>Index</h2>

编辑2: 这是routeconfig.cs文件的内容:

    using System.Web.Mvc;

using System.Web.Routing;

using TSS.Utilities;

namespace TSS

{

public class RouteConfig

{

public static void RegisterRoutes(RouteCollection routes)

{

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(

name: "Default",

url: "{instance}/{controller}.aspx/{action}/{id}",

defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

);

routes.MapRoute(

name: "CTPCatalogImportEmployee",

url: "{instance}/{controller}.aspx/{action}/{empId}/{series}"

);
}
}
}

编辑3: 这里有更多信息。我可以在他们调用的现有控制器中放置一个断点

return View()

并在打开这些页面时点击这些断点。但是当我在一个断点处放置

return View()

在我的新控制器中调用它永远不会被击中。 (这是当我尝试通过在浏览器的地址栏中输入相关的URL来导航到我的新视图时。)

2 个答案:

答案 0 :(得分:0)

您应该忽略旧的aspx文件,并保留没有.aspx的路由

public static void RegisterRoutes(RouteCollection routes) {
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{instance}/{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

    routes.MapRoute(
        name: "CTPCatalogImportEmployee",
        url: "{instance}/{controller}/{action}/{empId}/{series}"
    );
}

答案 1 :(得分:0)

偶尔我会忽视这一显而易见的事物。添加新控制器和视图后,我从不打算重建我的解决方案。一旦我这样做,控制器就会毫无困难地启动和拉起视图。

[叹息]

谢谢大家,感谢您的帮助。