我有以下场景:我的网站显示文章(由管理员输入。如博客)。
因此,要查看文章,用户会被引用到 Home/Articles/{article ID}。
但是,用户可以使用 jsTree 列表从 Articles.aspx View 本身中选择要查看的文章。
所以我需要做的是能够区分两种情况:用户正在访问特定的文章,或者他只是试图访问“主”文章页面。我尝试将“Articles” Controller 参数设置为可选(int?id),但随后我在“使用” Controller 内的 id 值时遇到问题。
处理这种情况的最佳方式是什么?也许我只是需要一个更好的逻辑来检查“url”中是否提供了 id 参数?
我试图避免使用两个 View / Controller ,只是出于代码重复的原因。
最佳答案
使用单独的操作,例如:
public ActionResult Articles() ...
public ActionResult Article(int id) ...
或者将其移动到文章 Controller (使用默认路由的 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));
}
关于asp.net-mvc - ASP.NET MVC Controller 参数可选(即 Index(int?id)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3863678/