繁体   English   中英

ASP.NET Core 2.0 URL

[英]ASP.NET Core 2.0 URLs

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

刚开始学习时,我以为 URL 取的是 View 的名称,但发现它们来自 Controller 方法。

这是一个传达我的问题的示例:

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

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

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

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

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

更新/编辑

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

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

当您只在控制器操作中执行 Return View("") name 时,URL 将是您正在使用的操作的名称。

如果您想重定向到某个特定的操作,这将有助于确保 Url 与您所在的位置匹配。 您可能想在此处阅读更多相关信息。

为此,请使用:

RedirectToAction()

您的应用程序响应的 URL 称为“路由”,它们要么是按约定创建的,要么是明确创建的。 当然,默认是按照惯例,它是/{controller=Home}/{action=Index}形式的 URL。 如果路由的那部分被保留, Index是默认操作,因此对/foo的请求将按照约定映射到FooController.Index HomeController是默认控制器,因此按照惯例,空路径(例如http://sample.com )将调用HomeController.Index

Razor Pages 有自己的约定。 这些确实遵循文件系统,但不包括路径的Pages部分。 因此,像Pages/Foo/MyRazorPage.cshtml这样的 Razor 页面将在/Foo/MyRazorPage/Foo/MyRazorPage

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM