C# ASP.NET Visual Studio脚手架id参数
当我在VisualStudio中创建MVC项目时,它为我搭建了控制器。在详细信息、编辑和删除操作中,操作中有一个“int?id”参数 这个身份证是从哪里来的?它如何知道要查找哪个id?它是否知道它正在寻找与该对象相关的主键id 谢谢C# ASP.NET Visual Studio脚手架id参数,c#,asp.net-mvc,visual-studio,parameters,C#,Asp.net Mvc,Visual Studio,Parameters,当我在VisualStudio中创建MVC项目时,它为我搭建了控制器。在详细信息、编辑和删除操作中,操作中有一个“int?id”参数 这个身份证是从哪里来的?它如何知道要查找哪个id?它是否知道它正在寻找与该对象相关的主键id 谢谢 public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCo
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Comment comment = db.Comments.Find(id);
if (comment == null)
{
return HttpNotFound();
}
return View(comment);
}
好的,当使用CRUD操作创建控制器时,MVC在
RegisterRoutes
方法中查找默认路由,如下所示:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
name: "Default", // Route name
url: "{controller}/{action}/{id}", // URL with parameters
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
}
根据上面的路线定义,id
参数被声明为可选参数,但是在编辑或删除操作期间,控制器需要通过提供id
参数来知道应该编辑/删除哪些数据
选择
Nullable
声明id
参数的原因是为了确保检查从视图端传递的可能的null值(注意,控制器使用Comment Comment=db.Comments.Find(id)
)基于主键值在数据库中搜索。),当使用CRUD操作创建控制器时,MVC在RegisterRoutes
方法中查找默认路由,如下所示:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
name: "Default", // Route name
url: "{controller}/{action}/{id}", // URL with parameters
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
}
根据上面的路线定义,id
参数被声明为可选参数,但是在编辑或删除操作期间,控制器需要通过提供id
参数来知道应该编辑/删除哪些数据
选择
Nullable
声明id
参数的原因是为了确保检查从视图端传递的可能的null值(注意,控制器使用Comment Comment=db.Comments.Find(id)
)基于主键值在数据库中搜索)。好的,我将尝试解释。当您创建某个控制器(不是空的)时,它会为您编写一些DEAFULT操作。具体如下
索引-它显示实体模型的数据列表。
创建-使用它可以创建新对象(实例)并将其添加到实体模型中。
删除-它删除一个实例。
详细信息-如果要查看实例的详细信息,请使用此操作。参数是“Id”。因此,服务器根据Id(主键)从数据库中获取确切的实例。那么这个动作是如何获得Id的呢?答案是:从观点来看。通过发送单个实例的id,从该视图请求单个实例的详细视图。这有意义吗?我将附加一个网格图片在这里
因此,从网格中,如果你向右看,你可以看到一个钢笔标志和一个页面标志。页面标志是我的详细信息按钮。因此,如果我单击第一行的页码符号,我将发送名为Rupa的实例的主键,并请求服务器获取该实例的详细数据
希望有帮助。好的,我试着解释一下。当您创建某个控制器(不是空的)时,它会为您编写一些DEAFULT操作。具体如下 索引-它显示实体模型的数据列表。 创建-使用它可以创建新对象(实例)并将其添加到实体模型中。 删除-它删除一个实例。 详细信息-如果要查看实例的详细信息,请使用此操作。参数是“Id”。因此,服务器根据Id(主键)从数据库中获取确切的实例。那么这个动作是如何获得Id的呢?答案是:从观点来看。通过发送单个实例的id,从该视图请求单个实例的详细视图。这有意义吗?我将附加一个网格图片在这里 因此,从网格中,如果你向右看,你可以看到一个钢笔标志和一个页面标志。页面标志是我的详细信息按钮。因此,如果我单击第一行的页码符号,我将发送名为Rupa的实例的主键,并请求服务器获取该实例的详细数据
希望有帮助。它通过您回答的对话问题搭建控制器,好的。您选择了带有空操作的控制器,它提供了空操作。是的,它知道它在寻找PK,并使用null int作为其类型。您现在可以根据自己的情况进行修复。它通过您回答的对话问题搭建控制器,好的。您选择了带有空操作的控制器,它提供了空操作。是的,它知道它在寻找PK,并使用null int作为其类型。您现在可以根据您的情况进行修复。非常感谢您,它帮助了您很多。现在我明白了,它来自于观点……有道理!我非常高兴谢谢你,这对我很有帮助。现在我明白了,它来自于观点……有道理!非常乐意