我已被指派使用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来导航到我的新视图时。)
答案 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)
偶尔我会忽视这一显而易见的事物。添加新控制器和视图后,我从不打算重建我的解决方案。一旦我这样做,控制器就会毫无困难地启动和拉起视图。
[叹息]
谢谢大家,感谢您的帮助。