我想用Id填写表单,我已经用这种方式填写了网址
本地主机:1613 /患者/索引/ 1
其中1是Id。我想用Id 1患者的数据填写我的表格。 但是这个下面的函数没有在Controller中调用
public ActionResult Index(int id)
{
Patient p = new CEntities().Patients.Find(id);
return View(p);
}
相反,我正在进入
public ActionResult Index()
{
return View();
}
我是ASP.NET MVC的新手,我不知道用任何其他方式填写表单,我找到了一种方法,但它在查询字符串中显示我的整个对象是不安全的。而上述解决方案无效。
请建议我很好的解决方案。
答案 0 :(得分:2)
据我所知,你无法在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();
}
请看一下:Can you overload controller methods in ASP.NET MVC?
另一个建议:尝试使用脚手架,看看模板是如何为你做的:
1.右键单击控制器文件夹
2.添加 - >新控制器
3.具有实体框架读/写操作的控制器(据我记得从顶部开始的第3个)
4.选择模型类。
5.选择db context(维护与数据库连接的类)。
6.Ok。
它会生成带有视图的控制器,玩得开心。
答案 1 :(得分:0)
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 }
);
尝试评论您的其他索引操作方法" //公共ActionResult索引()",并查看尝试转到local-host时会发生什么:1613 / Patient / Index / 1