2016-01-08 40 views
-3

我已經在ASP.NET MVC 4 + Razor中設置了一些參數設置的路由。ASP.NET如果沒有給出路由參數,然後做點什麼

我傳遞的(編號)參數傳遞給控制器​​......然後我要檢查以下控制器上:

A.如果數據庫中存在的ID,返回查看

B.如果沒有提供的ID,重定向到指數

我不知道如何去這樣做的 - 和搜索周圍並沒有真正提供任何信息。

有人能告訴我如何做if/else語句來檢查{id}是否已提供?

控制器:

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

回答

1

你可以讓你的方法參數nullable 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是您的DbConte xt類,並且您正在使用Entity框架進行數據訪問。如果你的數據訪問方法不同(ADO.NET/NHibernate等),你可以用你的數據訪問代碼更新那部分代碼。

+1

完美的作品,非常感謝你!您的代碼也幫助我爲此添加錯誤處理。 :) – TheJackah

相關問題