C# 为什么不';我的链接不会把我带进控制器吗?
我想我并不完全理解url是如何与C#项目一起工作的,因为我不知道如何指定一个url来通过控制器,而不仅仅是返回一个aspx页面 假设我正试图通过名为“ScholarshipController.cs”的控制器访问我的项目的索引页。我想点击该控制器中的索引方法/操作,我的url如下(我的应用程序名为“TutionAssistance”仅供参考): 但是,运行此url只返回位于“Scholarship”视图文件中名为“Index.aspx”的aspx页面,而不点击控制器。为什么会发生这种情况?我如何让它通过控制器,以便在加载索引页时,将适当的信息加载到该页上 对不起,如果这是一个愚蠢的问题。任何见解都将不胜感激。谢谢 Route.config:C# 为什么不';我的链接不会把我带进控制器吗?,c#,asp.net-mvc-4,web,controller,C#,Asp.net Mvc 4,Web,Controller,我想我并不完全理解url是如何与C#项目一起工作的,因为我不知道如何指定一个url来通过控制器,而不仅仅是返回一个aspx页面 假设我正试图通过名为“ScholarshipController.cs”的控制器访问我的项目的索引页。我想点击该控制器中的索引方法/操作,我的url如下(我的应用程序名为“TutionAssistance”仅供参考): 但是,运行此url只返回位于“Scholarship”视图文件中名为“Index.aspx”的aspx页面,而不点击控制器。为什么会发生这种情况?我如何
using System.Web.Mvc;
using System.Web.Routing;
namespace ScholarshipTuitionAssistance
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
/* Scholarship */
/* Scholarship */
//routes.MapRoute("TuitionAssistance",
// "tuition/{name}",
// new { controller = "TuitionAssistance", action = "Index", name = "" });
routes.MapRoute(
name: "TuitionAssistance",
url: "{controller}/{action}/{employee_number}",
defaults: new { controller = "Home", action = "TuitionAssistance", employee_number = UrlParameter.Optional }
);
routes.MapRoute(
name: "Scholarship",
url: "{controller}/{action}/{employee_number}",
defaults: new { controller = "Home", action = "Scholarship", employee_number = UrlParameter.Optional }
);
routes.MapRoute(
name: "Details",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Scholarship", action = "Details", id = UrlParameter.Optional }
);
}
}
}
在MVC ASP.NET中,将这些类型的链接视为在控制器中调用方法的一种方式。当该链接被访问时,您的控制器会执行一系列垃圾操作,然后返回ActionResult(或其他内容)。为了便于解释,此ActionResult是写入相应视图文件中的标记。Controller->index()将在views->Controller下返回名为index的视图。如果要将信息传递给视图,则需要将包含所有信息的模型从索引控制器(返回视图(MyFancyModel))传递给视图。视图顶部将有一条剃刀线,例如:@model.Namespace.where.my.model.is
Visual Studio中用于索引页的脚手架控制器和视图仅传递相应数据库中的项目列表。在MVC ASP.NET中,将这些类型的链接视为在控制器中调用方法的一种方式。当该链接被访问时,您的控制器会执行一系列垃圾操作,然后返回ActionResult(或其他内容)。为了便于解释,此ActionResult是写入相应视图文件中的标记。Controller->index()将在views->Controller下返回名为index的视图。如果要将信息传递给视图,则需要将包含所有信息的模型从索引控制器(返回视图(MyFancyModel))传递给视图。视图顶部将有一条剃刀线,例如:@model.Namespace.where.my.model.is
Visual Studio中用于索引页的脚手架控制器和视图仅传递相应数据库中的项目列表。您的路由(URL)无法匹配文件系统中实际存在的任何内容。在这里的示例中,您显然有一个文件,
[document root]\Scholarship\Index.aspx
。因此,对奖学金/索引的请求将返回该文件,而不是调用ASP.NET MVC机制来加载控制器操作。您的路由(URL)无法匹配文件系统上实际存在的任何内容。在这里的示例中,您显然有一个文件,[document root]\Scholarship\Index.aspx
。因此,Scholarship/Index
的请求将返回该文件,而不是调用ASP.NET MVC机制来加载控制器操作。显示RouteConfig类。它应该在App_Start文件夹中。刚刚添加到我的帖子中。谢谢,我不想碰这里面的任何东西,因为一切似乎都在生产中运作。只是当我尝试在本地运行时,它会吐到我的脸上…所有3条路线都是相同的,它们接受0到3段。第二条和第三条路由定义毫无意义,因为它们永远不会被执行(任何匹配它们的url也会匹配第一条路由)。而且,您显示的所有路线都不会与您显示的url匹配。谢谢!我以前从未使用过routes,所以这是我希望得到的信息!让我们看看RouteConfig类。它应该在App_Start文件夹中。刚刚添加到我的帖子中。谢谢,我不想碰这里面的任何东西,因为一切似乎都在生产中运作。只是当我尝试在本地运行时,它会吐到我的脸上…所有3条路线都是相同的,它们接受0到3段。第二条和第三条路由定义毫无意义,因为它们永远不会被执行(任何匹配它们的url也会匹配第一条路由)。而且,您显示的所有路线都不会与您显示的url匹配。谢谢!我以前从未使用过routes,所以这是我希望得到的信息!谢谢你的解释!我以前从未见过有人把它说得这么清楚。过去我不得不对这些事情做出假设。我很感激!没问题。老实说,我有点担心我在发布我的答案后误解了你的问题。这就是你想知道的还是我完全错过了钉子?哈哈,我的意思是你有我一半的问题。我希望得到一个关于URL如何与C#(你给我的)中的控制器一起工作的明确答案。然而,我仍然需要弄清楚为什么在这种特殊情况下我没有击中我的控制器。我仍然无法理解。在这些情况下,我喜欢做的一件事是:导入System.Windows.Forms.dll,然后在我的控制器方法中调用MessageBox.Show(“我在这里制作”)。这将为您提供一个可靠的方法,告诉您问题是在控制器方法返回行中,还是在试图到达控制器的方式中。您是否可以在调试模式下在控制器中添加断点来完成相同的任务?或者使用留言盒有什么特别的地方吗?谢谢你的解释!我以前从未见过有人把它说得这么清楚。过去我不得不对这些事情做出假设。我很感激!没问题。老实说,我有点担心我在发布我的答案后误解了你的问题。这就是你想知道的还是我完全错过了钉子?哈哈,我是说你有
using System.Web.Mvc;
using System.Web.Routing;
namespace ScholarshipTuitionAssistance
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
/* Scholarship */
/* Scholarship */
//routes.MapRoute("TuitionAssistance",
// "tuition/{name}",
// new { controller = "TuitionAssistance", action = "Index", name = "" });
routes.MapRoute(
name: "TuitionAssistance",
url: "{controller}/{action}/{employee_number}",
defaults: new { controller = "Home", action = "TuitionAssistance", employee_number = UrlParameter.Optional }
);
routes.MapRoute(
name: "Scholarship",
url: "{controller}/{action}/{employee_number}",
defaults: new { controller = "Home", action = "Scholarship", employee_number = UrlParameter.Optional }
);
routes.MapRoute(
name: "Details",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Scholarship", action = "Details", id = UrlParameter.Optional }
);
}
}
}