簡體   English   中英

RouteLink 空 Href

[英]RouteLink empty Href

我將 MVC3 與 Razor 視圖引擎一起使用。 我想為 Href 使用某個 Route

以下是路線注冊,(路線似乎可以使用,我可以使用瀏覽器直接使用它)

routes.MapRoute(
    "AddItem",
    "{listAreaName}/{listSlug}/Add",
    new { controller = "List", action = "AddItem" }
    );

但 @Html.RouteLink 只是不起作用。 它為鏈接返回一個空的href

這是我的一些嘗試

@Html.RouteLink("Add New Item", "AddItem", new { controller="List", action="AddItem", listAreaName = Model.ListAreaName, listSlug = Model.Slug })<br />
@Html.RouteLink("Add New Item1", "AddItem", new { controller = "List", listAreaName = Model.ListAreaName, listSlug = Model.Slug })<br />
@Html.RouteLink("Add New Item2", "AddItem", new { action = "AddItem", listAreaName = Model.ListAreaName, listSlug = Model.Slug })<br />
@Html.RouteLink("Add New Item3", "AddItem", new { controller = "list", action = "additem", listAreaName = Model.ListAreaName, listSlug = Model.Slug })<br />
@Html.RouteLink("Add New Item4", "additem", new { controller = "List", action = "AddItem", listAreaName = Model.ListAreaName, listSlug = Model.Slug })<br />

@Html.RouteLink("Add New Item5", "additem", new { listAreaName = Model.ListAreaName, listSlug = Model.Slug })<br />
@Html.RouteLink("Add New Item6", "AddItem", new { controller = "ListController", action = "AddItem", listAreaName = Model.ListAreaName, listSlug = Model.Slug })<br />

如果我錯過了路線名稱,它會生成工作鏈接,但它的格式不正確

我找到的大部分材料都是用於 v1 的預覽版。 這個問題解決了嗎?

有任何想法嗎?

在最后一個路由鏈接中你有一個錯誤,你不應該使用Controller后綴:

@Html.RouteLink(
    "Add New Item6", 
    "AddItem", 
    new { 
        controller = "List", 
        action = "AddItem", 
        listAreaName = Model.ListAreaName, 
        listSlug = Model.Slug 
    }
)

就其他人而言,它們都生成以下 url: /ListAreaName/Slug/Add in ASP.NET MVC 3 RTM 假設您已設置默認路由並且您已添加問題中顯示的路由。

編輯

您的路線中只有一個元素可以省略默認值。 您沒有 listAreaName 或 listSlug 的默認值。 看到這個問題: asp mvc routing with two optional parameters

routes.MapRoute(
    "AddItem",
    "{listAreaName}/{listSlug}/Add",
    new
    {
        controller = "List",
        action = "AddItem",
        listAreaName = "foo", // <-- add these
        listSlug = UrlParameter.Optional
    });

原來的

您的路線實際上並不包括 controller 和操作參數。 您是否嘗試過從路由值中省略它們(在請求中對路由進行解碼時會推斷出它們)。 我要做的另一件事是確保 model 實際上包含ListAreaNameSlug值。

@Html.RouteLink("Add New Item",
                "AddItem",
                new
                {
                     listAreaName = Model.ListAreaName,
                     listSlug = Model.Slug 
                })<br />

此外,您真的應該使用 CSS 將這些樣式設置為塊級元素,而不是盡可能在其后添加<br/>

<style>
   .block { display: block; }
</style>

@Html.RouteLink("Add New Item",
                "AddItem",
                new
                {
                     listAreaName = Model.ListAreaName,
                     listSlug = Model.Slug 
                },
                new { @class = "block" })

暫無
暫無

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

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