如果条件不正确,我可以重定向页面而不使用ActionResult返回类型吗?

时间:2015-10-08 22:25:11

标签: c# model-view-controller

我看过很多类似的帖子,但没有和我想做的事情完全一样。我很确定我做错了,但找不到答案......好吧......把我改正方向(没有双关语)。

我一直在修改Visual Studio为我创建的一些方法。我想要做的是重构我的代码,以便父控制器定义如果请求因某种原因无效而重定向用户的方法。以下是我正在尝试做的一个例子:

    protected Boolean CheckGoodRequest(Guid id)
    {
        if (id == null)
        {
            RedirectToAction("BadRequestError");
            return false;
        }
        return true;

在父类中,我有BadRequestError:

    protected ActionResult BadRequestError()
    {
        return new HttpStatusCodeResult(400, "There was a bad request made, please try again");
    }

现在我一直在阅读,为了让ReturnToResult工作,需要返回它。问题是,我不能在这种检查方法中使用它,因为我需要返回一个ActionResult。

此外,当我开始尝试测试这些无效的场景时(例如当用户试图查看另一个参数时),它会传递这些重定向,并允许访问。

我无法在自己的布尔返回值方法中独立检查这些,而无需返回ActionResult吗?或者我可以采取不同的流程将用户重定向到错误页面?

2 个答案:

答案 0 :(得分:0)

我认为这是使用RedirectToAction的错误方法。希望下面的代码可以在某种程度上提供帮助。

public ActionResult MyMethod()
{
    .....
    //Check the GUID ??
    if (id == null)
    {
        return RedirectToAction("BadRequestError");
    }

    .....
}

抱歉,如果我理解错误。

答案 1 :(得分:0)

所以我无法找到任何建议可以在不返回的情况下重定向,但我通过将我的布尔方法更改为可能引发异常的void来找出解决方案,如下所示:

    protected void CheckGoodRequest(Guid id)
    {
        if (id == null)
        {
            throw new HttpException(400, "There was something wrong with your request. Please try again.");
        }
    }

这允许我让这个检查不返回ActionResult,并且仍然让我能够检查子类可以继承的记录。