我正在尝试创建此网址链接:
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
任何提示都非常感谢,格拉西亚斯。
答案 0 :(得分:0)
好的,我做了这个并且它有效。这很容易阅读和理解。
<a href="/Vote/@ViewBag.TopicId/@ViewBag.TopicURL">@ViewBag.TopicTitle</a>
我有什么理由可以尝试使用@ Html.ActionLink(...)。那只是感觉像意大利面。
对于初学者,他们为什么要按此顺序放置参数(“文本”,动作,控制器)?这是一条曲折的道路。这更自然地想到: (控制器,动作,“文本”)......不是吗?