我看过很多类似的帖子,但没有和我想做的事情完全一样。我很确定我做错了,但找不到答案......好吧......把我改正方向(没有双关语)。
我一直在修改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吗?或者我可以采取不同的流程将用户重定向到错误页面?
答案 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,并且仍然让我能够检查子类可以继承的记录。