Asp.net core mvc 如何将重定向URL从Create action GET传递到POST
我正在尝试将Asp.net core mvc 如何将重定向URL从Create action GET传递到POST,asp.net-core-mvc,Asp.net Core Mvc,我正在尝试将RedirectUrl值从GET操作传递到POST操作,该值在操作用[Authorize]修饰时填充 当我使用TempData或ViewBag时,隐藏的INPUT元素不会被填充 /Credential/Create-GET: public IActionResult Create(string returnUrl = null) { // either option has the same effect //TempData["returnUrl"] = retur
RedirectUrl
值从GET
操作传递到POST
操作,该值在操作用[Authorize]
修饰时填充
当我使用TempData
或ViewBag
时,隐藏的INPUT
元素不会被填充
/Credential/Create-GET
:
public IActionResult Create(string returnUrl = null)
{
// either option has the same effect
//TempData["returnUrl"] = returnUrl;
ViewBag.ReturnUrl = returnUrl;
return View();
}
生成的HTML:
<input type="hidden" name="returnUrl" />
然后,输入包含视图模型的类名:
<input type="hidden" name="returnUrl" value="Foo.Models.ViewModels.CredentialViewModel" />
只需使用:
<input type="hidden" name="returnUrl" value="@Context.Request.Query["returnUrl"].SingleOrDefault()" />
然后,您甚至不需要费心设置
ViewBag
参考AccountController的工作方式,特别是登录方法调用如何在结果中工作。值得注意的是,您的
作为其编码将始终显示该viewmodel的整个名称空间,因为您实际上没有告诉它获取属性value=“@Model.ReturnUrl”
(例如)。
但您应该将其作为查询字符串值添加到
元素中,而不是隐藏的输入。
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("EmailAddress,Password")] CredentialViewModel credential, string returnUrl = null)
{
// null
Console.WriteLine(returnUrl);
}
<input type="hidden" name="returnUrl" value="@Context.Request.Query["returnUrl"].SingleOrDefault()" />