Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Razor 是否可以为标记助手启用一些静态检查?_Razor_Asp.net Core_Asp.net Core Mvc_Tag Helpers - Fatal编程技术网

Razor 是否可以为标记助手启用一些静态检查?

Razor 是否可以为标记助手启用一些静态检查?,razor,asp.net-core,asp.net-core-mvc,tag-helpers,Razor,Asp.net Core,Asp.net Core Mvc,Tag Helpers,例如,我可以在默认mvc模板中编写此代码 <a asp-area="" asp-route-returnUrlFoo="foo" asp-controller="Account" asp-action="RegisterFoo">Register</a> 当操作名称或路由参数不正确时,是否可能引发错误?回退方法:“通用”处理不匹配的控制器和操作 您可以添加一个新路由,将所有无效请求重定向到您自己的特定控制器和操作: app.UseMvc(routes =>

例如,我可以在默认mvc模板中编写此代码

<a asp-area="" asp-route-returnUrlFoo="foo" 
   asp-controller="Account" asp-action="RegisterFoo">Register</a>
当操作名称或路由参数不正确时,是否可能引发错误?

回退方法:“通用”处理不匹配的控制器和操作 您可以添加一个新路由,将所有无效请求重定向到您自己的特定控制器和操作:

app.UseMvc(routes =>
{
    // your other routes here

    routes.MapRoute(_
        name: "Fallback",
        url: "{*any}",
        defaults: new { controller = "Error", action = "Handler"});
}
在上述情况下,这将映射所有(未定义的)到
/Error/Handler
。您可以对此进行修改以满足自己的需求

您可以在此处阅读有关路由模板的更多信息:


备选方案:按控制器处理 当然,还有另一种选择,那就是在控制器的基础上处理它。这种方法不太通用,可以让您创建更多有针对性的方法来处理URI/路由错误

备选方案:检查控制器或操作是否存在
说清楚
/Account
是有效的控制器,
/RegisterFoo
是无效的操作吗?此外,您希望您的主机引发异常?或者你的意思是,用一个特定的状态代码来响应,比如400-错误的请求?@Svek是的,RegisterFoo是一个无效的操作。是,引发异常。我不希望
/Account/RegisterFoo?returnUrlFoo=foo
正常工作,因为此url不正确。我只需要一个异常。@ais您的控制器可以引发该异常。当使用此url的页面被删除时,我需要一个异常rendering@ais我为您添加了另一个可能的替代方案,您可以使用。这将允许您将错误检查准确地放置在所需的位置。
app.UseMvc(routes =>
{
    // your other routes here

    routes.MapRoute(_
        name: "Fallback",
        url: "{*any}",
        defaults: new { controller = "Error", action = "Handler"});
}
string actionName = this.ControllerContext.RouteData.Values["action"].ToString();
string controllerName = this.ControllerContext.RouteData.Values["controller"].ToString();