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

时间:2021-05-10 05:46:09

标签: controller asp.net-core-mvc asp.net-mvc-routing

我有一个显示个人信息的剃刀视图,它的路由是 https://localhost:PORT/Pesron/Details/E-12345

我想使用另一个控制器为上述人员创建个人资料,相应的链接为 https://localhost:PORT/Profile/Create/E-12345

页面会正常打开,但我想将值 E-123456(该人的 ID 显然会从一个更改为另一个)放入 Create 中的(已禁用)输入框中,所以当我填写其他信息并按提交,创建了一个新的配置文件,我使用 MVC 控制器进行操作,但也不介意使用 Web API。 我如何在 CreatePerson 视图中打开 Details

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

可能是因为我发送的值不是主键,我将其隐藏并自动递增。

1 个答案:

答案 0 :(得分:1)

您可以使用 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"/>

发布创建方法:

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