Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.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
C# 如何禁止在MVC中直接显示视图_C#_Asp.net Mvc_Visual Studio - Fatal编程技术网

C# 如何禁止在MVC中直接显示视图

C# 如何禁止在MVC中直接显示视图,c#,asp.net-mvc,visual-studio,C#,Asp.net Mvc,Visual Studio,以下情况可以解决吗? -我有一个视图:All.cshtml -我有一个控制器和两个动作(All,FakeAll) 我想禁止从伪造所有操作(以及其他伪造或任何人)获得所有视图 应仅通过All操作执行对All视图的访问 主要是: 每当有人试图调用返回视图(“全部”)那么应该是获取错误或其他信息您可以“覆盖”控制器方法视图 public ViewResult View(string viewName, [CallerMemberName]string memberName = "") {

以下情况可以解决吗?

-我有一个视图:All.cshtml
-我有一个控制器和两个动作(AllFakeAll

我想禁止伪造所有操作(以及其他伪造或任何人)获得所有视图

应仅通过All操作执行对All视图的访问

主要是:
每当有人试图调用
返回视图(“全部”)
那么应该是获取错误或其他信息

您可以“覆盖”控制器方法
视图

public ViewResult View(string viewName,
    [CallerMemberName]string memberName = "")
{
    if (viewName != memberName)
    {
        throw new ArgumentException("Invalid view name");
    }

    return base.View(viewName);
}
如果调用
View()
的方法名与视图名不同,则会引发异常。

您可以“覆盖”控制器方法
View

public ViewResult View(string viewName,
    [CallerMemberName]string memberName = "")
{
    if (viewName != memberName)
    {
        throw new ArgumentException("Invalid view name");
    }

    return base.View(viewName);
}

如果调用
View()
的方法名与viewname不同,它将引发异常。

为什么需要这个
FakeAll
?将其私有化将是一种选择?如果您使用任何类型的会员资格,您可以使用
[Authorize]
来装饰它,因此,只有经过身份验证的用户才能访问该操作。我编辑了我的问题以获取更多信息:)您为什么需要此
伪造文件?将其私有化是一种选择?如果您使用任何类型的会员资格,您可以使用
[Authorize]
对其进行修饰,因此,只有经过身份验证的用户才能访问该操作。我编辑了我的问题以获取更多信息:)此覆盖将适用于每个视图和控制器,或者你是指一个特定的覆盖?你必须覆盖每个重载,我只做了一个。为了让它在每个控制器上工作,我认为最好的方法是创建一个类
BaseController
,并使应用程序中的每个控制器都继承自它,而不是
controller
。我明白了,我明天会试试,现在是01:00,我很累,但是答案看起来很好:)你认为有可能发送一个关于它的设计时错误吗?它看起来疯狂而美味。但是用铀球拍射杀一只鸟:p这个超控对每一个视图和conrtoller都有效,或者你指的是一个特定的超控吗?你必须超控每一个超控,我只做了一个。为了让它在每个控制器上工作,我认为最好的方法是创建一个类
BaseController
,并使应用程序中的每个控制器都继承自它,而不是
controller
。我明白了,我明天会试试,现在是01:00,我很累,但是答案看起来很好:)你认为有可能发送一个关于它的设计时错误吗?它看起来疯狂而美味。但是用铀球拍射杀一只鸟:P