MVC路由路径“?” vs“/”

时间:2015-02-05 08:11:14

标签: asp.net-mvc controller routing routes

我有两条返回同一页面的路线。两者都有效。两个页面都有正确的数据 - 除了我的_layout页面上的轮播不显示图像。

http://localhost:4556/Controller/Function/41 - 无效。

http://localhost:4556/Controller/Function?id=41 - 确实有用。

route.config文件......

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

有谁知道这是为什么?

_layout

The carousel I am using is such: 
<div id="myCarousel" class="container carousel slide" data-ride="carousel">
            <ol class="carousel-indicators"></ol>
            <div class="carousel-inner" role="listbox"></div>
            <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
                <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
                <span class="sr-only">Previous</span>
            </a>
            <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
                <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
                <span class="sr-only">Next</span>
            </a>
        </div>

脚本中使用的图像路径是:ImagePath:“../ Images / Carousel / default-image.png”

未正确显示广告的网页引用了布局页面,如:

Layout = "~/Views/Shared/_Layout.cshtml";

2 个答案:

答案 0 :(得分:0)

我配置了以下路线:

routes.MapRoute(
    "GetGift",
    "{controller}/{action}/{priceId}",
    new { controller = "Home", action = "GetGift" });

<强>控制器

public class HomeController : Controller
{
    public ActionResult GetGift(int priceId)
    {
        return View();
    }
}

当我导航到此网址时:http://localhost:20441/Home/GetGift/1我最终采用上述操作方法。当我尝试http://localhost:20441/Home/GetGift?priceId=1时会发生同样的事情。所以我可以选择使用哪种格式。

配置路由可能是一种黑暗的艺术,但我倾向于尽可能地将它们声明为(在我的示例中,我在路由中特别提到{priceId}以避免使用模糊的{ id } ),以帮助缩小路由引擎必须迭代的选择范围,并避免混淆,即路由引擎选择与我预期不同的路线。

答案 1 :(得分:0)

您好我问过一个非常聪明的人。

我的图片需要使用@ Url.Content(etc ..)

引用

感谢所有回答我的人! :)