簡體   English   中英

MVC路由問題如何設置所有Controller的默認動作?

[英]Problem with MVC Routing how to set default action of all Controller?

我的RouteConfig是這樣的:

 routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            namespaces: new[] { "GPTKish.Controllers" }
        );

當我輸入ex: http:// localhost:23594 / News時 ,顯示新聞控制器的索引操作但是當我輸入http:// localhost:23594 / NewsImages時 ,得到HTTP錯誤403.14 - 禁止!!!! 並且不顯示NewsImages Controller的索引動作! 我的代碼錯在哪里? 這是我的newsImages控制器

public class NewsImagesController : Controller
{
    private DatabaseContext db = new DatabaseContext();

    // GET: NewsImages
    public ActionResult Index(int selectedNewsid)
    {

        List<NewsImage> newsImages = db.NewsImages.Include(n => n.News).Where(c => c.NewsId == selectedNewsid).ToList();
        ViewBag.NewsTitle = newsImages[1].News.Title;
        return View(newsImages);
    }

謝謝

這是因為Index期待一個參數:selectedNewsid。

http:// localhost:23594 / NewsImages?selectedNewsid = 0或(如果使用HttpGet屬性) http:// localhost:23594 / NewsImages / 0應解決。

兩種選擇:

1)使selectedNewsid成為可選項並且(可選)添加HttpGet屬性(由於參數)

[HttpGet("{selectedNewsid")]
public ActionResult Index(int selectedNewsid = 0)
{
    if(selectedNewsid == 0)
    {
       //Show all news images
    }else{
        List<NewsImage> newsImages = db.NewsImages.Include(n => n.News).Where(c => c.NewsId == selectedNewsid).ToList();
        ViewBag.NewsTitle = newsImages[1].News.Title;
        return View(newsImages);
    }
}

2)創建沒有參數的新默認操作

public ActionResult Index()
{
    return View();
}

此URL - http:// localhost:23594 / NewsImages - 未提供selectedNewsId的值。 如果要顯示NewsId = 5的圖像,則URL應為http:// localhost:23594 / NewsImages?selectedNewsId = 5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM