首页 > 解决方案 > 来自 void-POST 操作的 MVC 重定向

问题描述

我当前的操作如下所示:

[HttpPost]
public void AddMessage([FromBody] ShoutboxMessage input)
{
    if (!string.IsNullOrWhiteSpace(input.Message) && Request.Cookies["usrid"] != null)
    {
        input.SbUserId = int.Parse(Request.Cookies["usrid"]);
        input.Timestamp = DateTime.UtcNow;
        context.ShoutboxMessages.Add(input);
        context.SaveChanges();
    }
}

我只想这样做:

[HttpPost]
public void AddMessage([FromBody] ShoutboxMessage input)
{
    if (Request.Cookies["usrid"] == null)
        RedirectToAction("Login");

    if (!string.IsNullOrWhiteSpace(input.Message))
    {
        //...
    }
}

但这显然行不通。有没有办法从应该返回无效的操作中重定向?或者,反过来,一个应该返回ActionResultnot 的 Action 是否会导致当前页面的任何重定向或重新加载?

编辑:“重复”与此无关。可能是一个void动作的返回与一个动作基本相同EmptyResult,但这不是这里的主题,基本上我想知道如何在运行时在anEmptyResult和an之间进行选择。ActionResult

标签: c#asp.netasp.net-mvcredirect

解决方案


像这样的东西?您可以随时EmptyResult()从 Action 返回。

[HttpPost]
public ActionResult AddMessage([FromBody] ShoutboxMessage input)
{
    if (Request.Cookies["usrid"] == null)
        return this.RedirectToAction("Login");

    if (!string.IsNullOrWhiteSpace(input.Message))
    {
        //...
        return new EmptyResult();
    }
}

推荐阅读