ASP.NET如果没有给出路由参数,那么做一些事情

时间:2016-01-08 01:03:02

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

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

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

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

B。如果未提供ID,则重定向到索引

我不知道如何去做这些 - 而且搜索并不真正提供任何信息。

有人可以告诉我如何使用if / else语句检查是否已提供{id}吗?

控制器:

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

1 个答案:

答案 0 :(得分:1)

您可以将方法参数设为 nullable int ,以便它可以用于请求网址,例如

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等..),您可以使用您的数据访问代码更新该部分代码。