假设我有一个包含两个视图的简单ASP.NET MVC站点。视图使用以下路径:/ Foo和/ Foo / Bar。
现在假设我想使用URL来指定(仅为了示例)网站的背景颜色。我希望我的路线可以是/ Blue / Foo或/ Green / Foo / Bar。
另外,如果我从视图中调用Html.ActionLink,我希望Blue或Green值传播,而不必传入。所以,例如,如果我调用Html.ActionLink(“Bar”,“Foo”)来自/ Blue / Foo,我想/ Blue / Foo / Bar回来。
我最好能做到这一点吗?
(如果我错过了现有的帖子,请原谅我。这对我来说很难简明扼要,所以我不太清楚要搜索什么。)
答案 0 :(得分:2)
查看这篇文章,特别是关于ActionLink
http://stephenwalther.com/blog/archive/2009/03/03/chapter-6-understanding-html-helpers.aspx
注意参数如何工作。您可以使用模型中的值在routeValues参数中传递颜色。
答案 1 :(得分:1)
就我个人而言,我认为从长远来看这实际上是“hacky”实施和维护的方式。
为什么不直接使用Url参数?
示例 - 具体实现如下:
public ActionResult BackGroundColorChangerAction(string color = "") { // <- Providing a default value if no value was defined
ViewData["backgroundColor"] = color; // Or do some processing first
return View();
}
现在我们需要在视图中显示该值。感谢ViewData
,我们可以使用正确的数据轻松提供观看次数:
...
<body>
<div>
<h2>Your Current Color: <b><%: ViewData["backgroundColor"] %></b></h2>
<%: Html.ActionLink("Red", "BackGroundColorChangerAction", new { color = "red" }) %><br />
<%: Html.ActionLink("Green", "BackGroundColorChangerAction", new { color = "green" }) %><br />
<%: Html.ActionLink("Blue", "BackGroundColorChangerAction", new { color = "blue" }) %><br />
</div>
</body>
...
现在,您可以使用收到的ViewData [“backgroundColor”]值完成所有操作。 使用JavaScript连接它,您可以轻松地在html元素上进行颜色切换。
我使用链接和可选参数的固定字符串值来完成它,但您可以轻松设置Enum
或包含此数据的数据库表。