【问题标题】:MVC3: url with only controller and parameters (no action)MVC3:只有控制器和参数的 url(无操作)
【发布时间】:2023-03-17 01:42:02
【问题描述】:

我正在尝试使用分段 www.example.com/Store*/Segment1/Segment2/Segment3* 创建一个 Html.ActionLink。这些段是可选的。

我定义了以下路线:

routes.MapRoute("Store",
"{controller}/{Segment1}/{Segment2}/{Segment3}",  
new
{
controller = "Store",
action = "Show",
segment1 = UrlParameter.Optional,
segment2 = UrlParameter.Optional,
segment3 = UrlParameter.Optional
}
);

不应在 url 中看到 Action。我似乎无法创建有效链接。

在视图中,我生成如下链接:

<ul>
@foreach (KeyValuePair<string, string> item in ViewBag.LinkList){<li>@Html.ActionLink(item.Key, "Show", "Store", new { item.Value })</li>}
</ul>

当我在地址栏中输入 url 时一切顺利(Action 可以读取段作为参数),但我无法正确获取 Html.ActionLink。 任何人都可以给我这个路线的工作 ActionLink 的例子吗?谢谢!

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-mvc-routing html.actionlink


    【解决方案1】:

    您为segment2 定义了两次默认值,忘记了segment3 这会破坏整个事情,因为您没有在ActionLink 调用中定义段变量。

    【讨论】:

    • 谢谢,已编辑。这是帖子中的错字,但我的代码中的路线没有:)
    • 哦,好的。 @Html.ActionLink(item.Key, "Show", "Store", new { item.Value }) 这一行看起来也有问题,new { item.Value } 不是有效的表达式。
    • 我知道,我需要创建一个 actionlink 来生成类似于 ~/Store/segment1/ 的内容。 item.Key 是urlname,item.Value 是参数
    • 喜欢这个@Html.ActionLink(item.Key, "Show", "Store", new { segment1 = item.Value })?
    • 生成类似localhost:50107/Store/Segment1?Length=8 的链接,而不是localhost:50107/Store/Segment1。应该动态生成不同的段(更深层次)..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多