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();
}
您可以将方法参数设置为可为null的int,这样它就可以用于等请求URL
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等),您可以使用数据访问代码更新该部分代码。