我想用 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 时会发生什么