如何禁止在MVC中直接显示View

时间:2013-12-06 23:42:51

标签: c# asp.net-mvc visual-studio

可以解决以下情况吗?

- 我有一个观点:全部 .cshtml
- 我有一个控制器和两个动作(全部 FakeAll

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

public ActionResult FakeAll()
{
    //There is some setting what ALWAYS have to be runned 
    //before the All view is displayed
    return View("All");
    //It should be throw a design time error or an exception
}

public ActionResult All()
{
    return View("All");
    //It should be display the view without any interception as its do it now.
}

All View的访问权限应仅通过All Action执行。

主要的是:
当有人试图调用return View("All");时,它应该会出现错误或其他事情

1 个答案:

答案 0 :(得分:1)

您可以“覆盖”Controller方法View

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

    return base.View(viewName);
}

如果调用View()的方法名称与视图名称不同,则会引发异常。