gpt4 book ai didi

asp.net-mvc - MVC在提交按钮点击登录重定向后从表单发布数据

转载 作者:行者123 更新时间:2023-12-03 21:38:57 25 4
gpt4 key购买 nike

你怎么能有一个不需要用户登录的表单,直到他们点击提交,然后在用户登录时提交表单,否则重定向到登录页面。那么用户登录成功后,提交原始表单?原始表单也有一个 元素,除非用户成功登录,否则不应上传文件。

最佳答案

我知道这是一个旧帖子,希望我的经验能帮助某人:

我有两个提交按钮和一个通用方法,它被调用来处理它们两个的表单提交 - 条件语句检查哪个按钮正在提交表单。

在要求用户进行身份验证的按钮上,它返回 HttpUnauthorizedResult()强制用户返回登录页面。
登录后,用户将被发送回填写了字段值的表单,因为它们存储在 TempData 条目中,但用户仍然需要再次单击按钮以提交数据。

因此,我添加了一个名为 AutoSave 的 bool TempData 变量。这将在返回 HttpUnauthorizedResult() 之前设置好.
我在再次加载表单之前检查它,如果 AutoSave == true我只是重定向到处理提交的方法。
奇迹般有效。

这是示例代码:

private ActionResult ProcessOnlineApplication(OnlineApplicationViewModel application){

//if not submit make sure it's save.
if (application.SubmitAction == "Save")))
{
if(!User.Identity.IsAuthenticated)
{
//Keep a copy of the application until logged in
TempData["PendingOnlineApplication"] = application;
TempData["AutoSave"] = true;
return new HttpUnauthorizedResult();
}
else{
//Everything goes here
}
}
}
public ActionResult OnlineApplicationForm(){
var viewModel = TempData["PendingOnlineApplication"] as OnlineApplicationViewModel;
if (TempData.ContainsKey("AutoSave") && Convert.ToBoolean(TempData["AutoSave"]) && viewModel != null)
{
TempData["AutoSave"] = false;
return ProcessOnlineApplication(viewModel);
}
if (viewModel == null)
{
viewModel = CreateModel();
}
return GetOnlineApplicationAction(viewModel);
}

关于asp.net-mvc - MVC在提交按钮点击登录重定向后从表单发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13428517/

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