ASP.NET如果未给定路由参数,则执行某些操作

本文关键字:执行 操作 参数 路由 如果 NET ASP | 更新日期: 2023-09-27 18:29:23

我在ASP.NET MVC 4+Razor中设置了一些带参数的路由。

我正在将参数{id}传递给控制器。。。然后在控制器上,我想检查以下内容:

A如果id存在于数据库中,则返回视图

B如果没有提供id,则重定向到索引

我不知道该怎么做——四处搜索并不能真正提供任何信息。

有人能告诉我如何做if/else语句来检查是否提供了{id}吗?

控制器:

public ActionResult View(int id)
        {
            return View();
        }

ASP.NET如果未给定路由参数,则执行某些操作

您可以将方法参数设置为可为null的int,这样它就可以用于等请求URL

yourDomainName/yourController/viewyourDomainName/yourController/view/25

public ActionResult View(int? id)
{
   if(id!=null)  // id came in the request
   {
      int postId= id.Value;
      var postViewModel = new PostViewModel { Id=postId};
      // Use postId to get your entity/View model from db and then return view
      // The below is the code to get data from Db. 
      // Read further if your data access method is different.
      var db = new MyDbContext()
      var post=db.Posts.FirstOrDefault(x=>x.Id==postId);
      if(post!=null)
      {
          postViewModel.Title = post.Title;
          return View(postViewModel);
      }
      return View("PostNotFound"); // Make sure you have this view.
   }
   //If code reaches here, that means no id value came in request.
   return RedirectToAction("Index");
}

假设MyDbContext是您的DbContext类,并且您正在使用Entity框架进行数据访问。如果您的数据访问方法不同(ADO.NET/NHibernate等),您可以使用数据访问代码更新该部分代码。