C# ASP.NET核心2.0 URL

C# ASP.NET核心2.0 URL,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,我正在开发一个大型ASP.NET Core 2 web应用程序,但我仍然对URL感到困惑 第一次学习时,我以为URL是视图的名称,但发现它们来自控制器方法 下面是一个表达我的问题的例子: 我有一个名为Daysheet的控制器方法,它返回一个同名的视图和模型 在Daysheet视图中,我从Javascript调用各种控制器方法来执行特定的操作。其中一个称为AssignStaff,它接受两个整数参数 在AssignStaff方法中,我再次返回带有模型的Daysheet视图,但现在我的URL是“Ass

我正在开发一个大型ASP.NET Core 2 web应用程序,但我仍然对URL感到困惑

第一次学习时,我以为URL是视图的名称,但发现它们来自控制器方法

下面是一个表达我的问题的例子:

我有一个名为Daysheet的控制器方法,它返回一个同名的视图和模型

在Daysheet视图中,我从Javascript调用各种控制器方法来执行特定的操作。其中一个称为AssignStaff,它接受两个整数参数

在AssignStaff方法中,我再次返回带有模型的Daysheet视图,但现在我的URL是“AssignStaff”

我不能只是重定向,因为整个Daysheet模型没有传递给AssignStaff方法

我有很多这样的情况,在调用一个操作之后,我最终得到了另一个我不想要的URL

更新/编辑

如果我的解释令人困惑,谢谢你的帮助和道歉。我只是有一个名为Daysheet的视图,它使用一个模型。我想调用各种控制器方法来执行各种操作,但我想停留在“Daysheet”视图/URL上


如前所述,我不能仅仅重定向,因为在action方法中,我不再拥有Daysheet视图中的整个模型。另外,如果我重定向,我不能传递整个模型,因为这会导致一个错误,说头太长。我认为我唯一的选择可能是对操作使用ajax,这样URL就不会改变。

当您在控制器操作中只返回视图(“”)名称时,URL将是您正在使用的操作的名称

如果您想重定向到某个特定操作,这将有助于确保Url与您所在的位置匹配。你可能想读更多关于它的内容

为此,请使用:

RedirectToAction()

应用程序响应的URL称为“路由”,它们要么按照约定创建,要么显式创建。当然,默认设置是按约定的,它是一个URL,格式为
/{controller=Home}/{action=Index}
<代码>索引是默认操作,如果路由的该部分被中断,那么对
/foo
的请求将按照惯例映射到
FooController.Index
HomeController
是默认控制器,因此按照惯例,空路径(例如)将调用
HomeController.Index

剃须刀页面有自己的约定。它们在某种程度上遵循文件系统,但不包括路径的
部分。所以像
Pages/Foo/MyRazorPage.cshtml
这样的Razor页面将在
/Foo/MyRazorPage
下加载

这里有
路由
属性,允许您指定完全自定义的路由。此属性可应用于控制器类和类中的单个操作。例如:

[Route("foo")]
public class MyAwesomeController
{
    [Route("bar")]
    public IActionResult MyAwesomeAction()
    {
        return View();
    }
}

这样,对
/foo/bar
的请求实际上将调用
MyAwesomeController.MyAwesomeAction

不清楚您要问什么(并且您没有显示任何代码来解释)。如果您正在重定向到
AssignStaff
,则这将是url(这就是web的工作方式)。如果你想停留在同一个页面上,那么就使用ajax来调用你的服务器方法。我认为这与ASP.NET核心的关系不大,而与ASP.NET的关系更大。在这种情况下,阅读任何有关路由的MSDN文章都是很好的。为什么用户会否决我的问题?如果我有所有的答案,我就不会寻求帮助。@RossKelly:有时候人们不喜欢问题被问到几乎没有解释或例子,就像最初的情况一样。不幸的是,他们没有询问更多的信息,而是使用否决票作为问题/描述质量的信号。其中一些用户甚至不知道问题域,仍然拒绝投票!我认为这不公平,至少其他人要求更多的信息。所以:不要让它让你失望:-)。@RobBos谢谢你的评论。我会尽量让我的问题/解释更清楚、更具描述性。我有帕金森病,所以有时候打字很困难。