ASP.NET 核心获取路由数据值到输入框

ASP.NET core get route data values into input box

我有一个 razor 视图,其中显示了一个人的信息,它的路线是 https://localhost:PORT/Pesron/Details/E-12345

我想使用另一个控制器为所述人创建一个配置文件,相应的 link 将是 https://localhost:PORT/Profile/Create/E-12345

该页面可以正常打开,但我想获取值 E-123456,它是此人的 ID,显然从一个到另一个,进入 Create 中的(禁用)输入框,因此,当我填写其他信息并按下提交时,将创建一个新的配置文件,我正在使用 MVC 控制器进行操作,但不介意也使用 Web API。 我如何在 PersonDetails 视图中打开 Create

<a asp-action="Create" asp-controller="Profile" asp-route-id="@Model.ID">Create</a>

我的 2 Create 个操作方法。

        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create(string MRN, [Bind("Id,Dep_Id,Check_In,Check_Out")] Profile profile)
        {
            ViewData["ID"] = MRN;


            if (ModelState.IsValid)
            {
                _context.Add(profile);
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }


            return View(profile);
        }

        public IActionResult Create(string MRN)
        {
           ViewData["ID"] = MRN;

            return View();
        }

可能是我发送的值不是主键,我把它隐藏起来自动递增了。

你可以使用ViewData。下面是一个例子。

查看:

<a asp-action="Create" asp-controller="Profile" asp-route-id="@Model.ID">Create</a>

创建操作:

 public IActionResult Create(string id)
    {
        ViewData["ID"] = id;

        return View();
    }

创建视图:

 <input value="@ViewBag.ID" disabled="disabled"/>

Post 创建方法:

 [HttpPost]
    public IActionResult Create(Profile profile, string id)
    {
        //.....
        return RedirectToAction("actionname","Controllername");
    }