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

使用ASP.NET MVC查询字符串填写表单,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,razor,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,Razor,我想用Id填写一张表格,我用这种方式创建了url 本地主机: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() { retu

我想用Id填写一张表格,我用这种方式创建了url

本地主机: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();
}
我是ASP.NETMVC的新手,我不知道如何用其他方法填写表单,我找到了一种方法,但它在查询字符串中显示了我的整个对象,这是不安全的。上述解决方案不起作用


请给我推荐一个好的解决方案。

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

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

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

另一个建议:尝试使用脚手架,看看模板是如何为您实现的:

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

2.添加->新控制器

public ActionResult Index(int id)
{

    Patient p = new CEntities().Patients.Find(id);


    return View(p);
}
3.具有实体框架读/写操作的控制器(据我所知,从顶部算起为第三个)

4.选择模型类

5.选择db上下文(维护与数据库连接的类)

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()”,并查看当尝试转到本地主机:1613/Patient/Index/1时会发生什么情况

HttpGet
装饰
索引(int-id)
操作。