asp.net-core - 将值从一个动作发送到另一个动作
问题描述
如何将参数从第一种方法传递给第二种方法?我想id
在public async Task<IActionResult> CreateReport
.
public IActionResult CreateReport(int id)
{
return View();
}
// POST: MemeReports/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> CreateReport([Bind("Id_report,Id_user,Id_meme,Description")] MemeReports memeReports)
{
memeReports.id_meme=id //i want do this
if (ModelState.IsValid)
{
db.Add(memeReports);
await db.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(memeReports);
}
解决方案
您可以使用 TempData 存储数据,直到它被读取:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-2.1#tempdata
在ConfigureServices
功能:
services.Configure<CookieTempDataProviderOptions>(options =>
{
options.Cookie.IsEssential = true;
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2).AddSessionStateTempDataProvider();
services.AddSession();
在Configure
功能:
app.UseCookiePolicy();
app.UseSession();
然后在CreateReport
函数中:
public IActionResult CreateReport(int id)
{
TempData["id"] = 1;
return View();
}
您可以在 post 函数中读取此值:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> CreateReport([Bind("Id_report,Id_user,Id_meme,Description")] MemeReports memeReports)
{
var value = TempData != null ? (TempData["id"]?.ToString() ?? "No TempData Value") : "No TempData";
memeReports.id_meme= value;
if (ModelState.IsValid)
{
db.Add(memeReports);
await db.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(memeReports);
}
在用户接受网站上的 cookie 政策后,TempData 应该可以工作。
推荐阅读
- python - 为什么属性'height'和'width'不能通过xlwings调整Excel中的图片大小?
- node.js - 使用 NodeJS 回复电子邮件线程的 GMail API
- swift - 使用 Swift 获取正在运行的进程(包括 root 拥有的进程)的完整列表
- amazon-cloudformation - 无服务器 - AWS Cloud Formation - 跨堆栈循环依赖
- excel - 如何查找一行中的数字是否与列中的数字匹配,然后自动将列中的数字偏移到另一个值
- javascript - 在使用 Bearer 传递正确的令牌后,Vue 3 仍然未经授权
- ios - Flutter ios 应用程序未使用 razorpay 插件构建
- sql - Oracle Sql:使用 group by 'Cube' 时无法使用 'With' 子句
- javascript - 如何根据所选选项显示元素?
- python - 这些 re.search 元字符在做什么?我的地址在哪里?不完全理解语法和RB