gpt4 book ai didi

c# - 返回网址中缺少查询字符串

转载 作者:太空宇宙 更新时间:2023-11-03 16:07:31 26 4
gpt4 key购买 nike

所以,我有一个只允许授权用户执行的操作。

[HttpPost]
[Authorize]
public ActionResult DoSomething(string data)
{
StoreData(data);
return RedirectToAction("Index", "Home");
}

在 View 中,我将此操作称为:

@using (Html.BeginForm("DoSomething", "Home"))
{
@Html.Hidden("data", "12345")
<input type="submit" value="DoIt" />
}

如果用户未被授权,他/她将被重定向到登录页面,但 ReturnUrl 不包含查询字符串(在本例中为“数据”的值)

http://localhost:62978/Account/Login?ReturnUrl=%2fHome%2fDoSomething

这是为什么,我可以解决它吗?

最佳答案

当 HTML 表单的方法是 POST 时,表单数据在 HTTP 请求的主体中发送。但是,当表单的方法是 GET 时,表单数据将作为 HTTP 请求中 URL 的一部分发送。

BeginForm 将默认呈现一个带有 method="Post" 的表单。您要么需要将表单的方法显式设置为 FormMethod.Get。示例:

@using (Html.BeginForm("DoSomething", "Home", FormMethod.Get))

或者,在显示表单之前需要用户授权。也就是说,将 Authorize 属性添加到呈现 View 的操作。示例:

[Authorize]
public ActionResult DoSomething()
{
View();
}

关于c# - 返回网址中缺少查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18803803/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com