我在ASP.NET MVC 4 + Razor中设置了一些参数设置路由。
我将{id}的参数传递给控制器...然后在控制器上我想检查以下内容:
A。如果数据库中存在id,则返回视图
B。如果未提供ID,则重定向到索引
我不知道如何去做这些 - 而且搜索并不真正提供任何信息。
有人可以告诉我如何使用if / else语句检查是否已提供{id}吗?
控制器:
public ActionResult View(int id)
{
return View();
}
答案 0 :(得分:1)
您可以将方法参数设为 nullable int ,以便它可以用于请求网址,例如
yourDomainName/yourController/view
和yourDomainName/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等..),您可以使用您的数据访问代码更新该部分代码。