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

问题描述

我有一个显示个人信息的剃刀视图,它的路由是 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();
        }

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

解决方法

您可以使用 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");
    }
 

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...