使用ASP.NET MVC Querystring填充表单

时间:2014-12-26 23:31:59

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 razor

我想用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的新手,我不知道用任何其他方式填写表单,我找到了一种方法,但它在查询字符串中显示我的整个对象是不安全的。而上述解决方案无效。

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

2 个答案:

答案 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