使用 ASP.NET MVC 查询字符串填写表单



我想用 Id 填写表单,并且我以这种方式制作了网址

本地主机:1613/患者/索引/1

其中 as 1 是 Id。我想用 ID 为 1 的患者的数据填写我的表格。但是下面的函数没有在控制器中调用

public ActionResult Index(int id)
{
    Patient p = new CEntities().Patients.Find(id);

    return View(p);
}

相反,我正在进入

public ActionResult Index()
{
    return View();
}

我是 MVC ASP.NET 新手,我不知道用任何其他方式填写表单,我找到了一种方法,但它在查询字符串中显示了我的整个对象,这是不安全的。而上述解决方案不起作用。

请给我建议好的解决方案。

我所知,您无法在 ASP.NET-MVC 中真正重载操作方法,因此只能有一个Index操作方法(没有任何额外的注释)。当然,您可以定义几个具有相同名称的方法,但是您可能希望在操作方法上方添加[HttpPost](或其他HTTP方法)注释,以便在提交表单后使用它。

将参数设置为可选可能会有所帮助:

public ActionResult Index(int? id){
        if(id.HasValue()){
            Patient p = new CEntities().Patients.Find(id);
            return View(p);
         }
   return View();
        }

请看一下:你能在 ASP.NET MVC中重载控制器方法吗?

另一个建议:尝试使用脚手架,看看模板如何为您服务:

1.右键单击控制器文件夹

2.新增>控制器

3.具有实体框架读/写操作的控制器(据我所知,从顶部开始第三个)

4.选择型号类别。

5.选择数据库上下文(保持与数据库连接的类)。

6.好的。

它将生成带有视图的控制器,玩得开心。

local-host:1613/Patient/Index/1

此路径应命中以下操作方法:

 public ActionResult Index(int id)

请检查您的 RouteConfig.cs 文件,并确保正确设置了默认路由:

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

尝试注释掉您的其他索引操作方法"//public ActionResult Index()",看看尝试转到 local-host:1613/Patient/Index/1 时会发生什么

最新更新