c# - 来自 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))
{
//...
}
}
但这显然行不通。有没有办法从应该返回无效的操作中重定向?或者,反过来,一个应该返回ActionResult
not 的 Action 是否会导致当前页面的任何重定向或重新加载?
编辑:“重复”与此无关。可能是一个void
动作的返回与一个动作基本相同EmptyResult
,但这不是这里的主题,基本上我想知道如何在运行时在anEmptyResult
和an之间进行选择。ActionResult
解决方案
像这样的东西?您可以随时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();
}
}
推荐阅读
- javascript - 使用 Click 事件反转 CSS 动画
- ios - UIAccessibilityElement `accessibilityCustomActions` 无法正常工作
- r - 改变 dplyr 中的 tibble 列以保存标签文本而不是值
- java - ES 7.4.1 - 身份验证 [Rest API]
- macos - 如何在 Mac 上设置远程访问?
- orm - 教义 ORM 创建方法 phpspec 测试失败
- oracle - Read and update an Oracle table with 20 millions records
- swift - 从我的 api 调整图像以填充我们所需宽度和高度的 uiimageview
- prolog - 条件的联合
- haskell - Recursive definition hangs indefintely