剃刀URL动作链接

时间:2016-06-15 03:51:54

标签: razor routes actionlink

我正在尝试创建此网址链接:

mysite.com/Vote/2/Learn-to-code

其中 area = vote, id = 2, topicURL =学习代码

在我的路由中,我有这个来处理这个URL模式:

context.MapRoute(
               "Topic",
               "Vote/{id}/{topicURL}",
               new { controller = "Topic", action = "TopicAnswers" },
               new[] { "eus.UI.Areas.Vote.Controllers"}
             );

但是我在生成URL链接时遇到了麻烦。这是我的尝试:

@Html.ActionLink("ViewBag.TopicTitle", "TopicAnswers", new { area = "Vote", controller = "Topic", id = ViewBag.TopicId, topicURL = @ViewBag.TopicURL })

第一个问题是:我如何使用ViewBag.TopicTitle?如果我删除引号,则会出现红色波浪形错误。我把引号放进去,这样我就可以运行应用程序来查看它生成的URL。

它生成一个怪物URL。

mysite.com/Vote/Topic/TopicAnswers/2?url=Learn-to-code

但是,URL确实有效。但我真的想创建一个简短而干净的URL。

mysite.com/Vote/2/Learn-to-code

任何提示都非常感谢,格拉西亚斯。

1 个答案:

答案 0 :(得分:0)

好的,我做了这个并且它有效。这很容易阅读和理解。

<a href="/Vote/@ViewBag.TopicId/@ViewBag.TopicURL">@ViewBag.TopicTitle</a>

我有什么理由可以尝试使用@ Html.ActionLink(...)。那只是感觉像意大利面。

对于初学者,他们为什么要按此顺序放置参数(“文本”,动作,控制器)?这是一条曲折的道路。这更自然地想到: (控制器,动作,“文本”)......不是吗?