Отправлено значение из действия в другое действие - PullRequest
1 голос
/ 02 июня 2019

Как передать параметр из первого метода во второй?Я хочу использовать 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);
}

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

Вы можете использовать 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();
}

Вы можете прочитать это значение в пост-функции:

[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);
}

TempData должен работать после того, как пользователь примет политику файлов cookie на сайте.

0 голосов
/ 02 июня 2019

Просто передайте его в вашем методе post:

[HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> CreateReport(int id, [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);
    }

Ваш первый метод вызывается, если вызывается сайт yourdomain / createreport / 1 (или yourdomain / createreport? Id = 1), и показывает представление createReport.

Если вы отправите сообщение с этой страницы, вы также опубликуете идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...