【问题标题】:ASP.NET core get route data values into input boxASP.NET核心获取路由数据值到输入框
【发布时间】:2021-05-10 05:46:09
【问题描述】:

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

我想使用另一个控制器为该人创建个人资料,对应的链接是https://localhost:PORT/Profile/Create/E-12345。

该页面将正常打开,但我想将值E-123456 这是人的 ID 并且显然从一个到另一个更改到 Create 的(禁用)输入框中,所以当我填写其他信息时然后按提交,创建一个新的配置文件,我正在使用 MVC 控制器进行操作,但也不介意使用 Web API。 我如何在Person 的Details 视图中打开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();
        }

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

【问题讨论】:

  • 你好,关于这个案例的任何更新?如果它不起作用,你可以提供你的代码。
  • 你应该使用asp-route-MRN="@Model.ID"。将您的代码更改为&lt;a asp-action="Create" asp-controller="Profile" asp-route-MRN="@Model.ID"&gt;Create&lt;/a&gt;
  • 把MRN放在Bind()里面有关系吗?
  • 你不需要把MRN放在Bind()中。你可以试试。
  • 删除 Bind() 正在解决问题

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


【解决方案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");
    }
 

【讨论】:

  • 不工作,也在尝试@ViewData["ID"],也不工作。
  • 哪里不行?输入框中没有显示正确的id吗?
  • 是的,输入框是空白的。
  • 在你的 Create 操作中打断点,观察 id 是否绑定成功,并确保 &lt;input value="@ViewBag.ID" disabled="disabled"/&gt; 在你的 Profile/Create 视图中。
  • 你可以看到我的test。
猜你喜欢
  • 2017-12-16
  • 1970-01-01
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
  • 2021-09-07
  • 2020-05-30
  • 2016-10-29
  • 2019-08-02
相关资源
最近更新 更多