Asp.net-Mvc
ASP.NET MVC 控制器參數可選(即 Index(int?id))
我有以下場景:我的網站顯示文章(由管理員輸入。像部落格一樣)。
所以要查看一篇文章,使用者會被引用到首頁/文章/{文章 ID}。
但是,使用者使用 jsTree 列表從 Articles.aspx 視圖本身中選擇要查看的文章。
所以我需要做的是能夠區分兩種情況:使用者正在訪問特定的文章,或者他只是試圖訪問“主”文章頁面。我嘗試將“Articles”控制器參數設置為可選(int?id),但後來我在“使用”控制器內的 id 值時遇到了問題。
處理這種情況的最佳方式是什麼?也許我只是需要一個更好的邏輯來檢查“url”中是否提供了 id 參數?
我試圖避免使用兩個視圖/控制器,只是出於程式碼重複的原因。
使用單獨的操作,例如:
public ActionResult Articles() ... public ActionResult Article(int id) ...或者將其移動到 Articles 控制器(使用預設路由的 url 將是:
Articles和Articles/Detail/{id}):public class ArticlesController : Controller { public ActionResult Index() ... public ActionResult Detail(int id) ... }如果您仍然必須像發布的那樣使用它,請嘗試以下方法之一:
public ActionResult Articles(int id = 0) { if(id == 0) { return View(GetArticlesSummaries()); } return View("Article", GetArticle(id)); } public ActionResult Articles(int? id) { if(id == null) { return View(GetArticlesSummaries()); } return View("Article", GetArticle(id.Value)); }
我不知道你是否嘗試過這個,但是如果你直接在 URL 中輸入值,那麼,而不是像這樣傳遞它:
控制器/動作/idValue
嘗試像這樣傳遞它:
控制器/動作?id=值