asp.net 核心在地址栏上显示正确的 url

asp.net core showing correct url on address bar

这是我的控制器代码

public async Task<IActionResult> MyView_001(long id = null)
{
  if(id != null)
     {
          ViewData["DataValue"] = id;
          return View("MyView_002");
     }
   return View();
}

public async Task<IActionResult> MyView_002()
{
   return View();
}

如您所见,我有两个视图 (MyView_001,MyView_002) ,如果 id 不为 null ,首先我会调用 MyView_001?id=1 ,我要returnMyView_002。目前为止一切正常,但问题是地址栏上显示 url。目前显示 MyView_001?id=1 甚至 MyView_002
我只想在 url.
中显示 MyView_002 我该如何解决?

更新
而且我还想在 MyView_002.

中使用 ViewData["DataValue"]

不是直接return查看,可以使用RedirectToAction.

public async Task<IActionResult> MyView_001(long id)
{
    if(id != 0)
    {
        TempData["DataValue"] = id.ToString();
        return RedirectToAction("MyView_002");
    }
    return View();
}

更新:

使用session进行持久化:

控制器

public async Task<IActionResult> MyView_001(long id = 0)
    {
        if (id != 0)
        {
            HttpContext.Session.SetString("Id", id.ToString());
            return RedirectToAction("MyView_002");
        }
        return View();
    }

    public async Task<IActionResult> MyView_002()
    {
        var id = Convert.ToInt64(HttpContext.Session.GetString("Id"));
        return View(id);
    }

MyView_002.cshtml:

@model long

<h1>MyView_002</h1>

@Model

在 Startup.cs 中配置会话:

public void ConfigureServices(IServiceCollection services)
    {
        ...
        services.AddSession();
        ...
    }

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        ...
        app.UseSession();
        ...
    }