3

假设我有一个带有两个视图的简单 ASP.NET MVC 站点。视图使用以下路由:/Foo 和 /Foo/Bar。

现在假设我想使用 URL 来指定(仅作为示例)站点的背景颜色。例如,我希望我的路线是 /Blue/Foo 或 /Green/Foo/Bar。

此外,如果我从视图调用 Html.ActionLink,我希望传播蓝色或绿色值,而不必传入。因此,例如,如果我从 / 调用 Html.ActionLink("Bar", "Foo") Blue/Foo,我希望 /Blue/Foo/Bar 回来。

我怎样才能做到这一点?

(如果我错过了现有的帖子,请原谅我。这对我来说很难简明扼要,所以我不太确定要搜索什么。)

4

1 回答 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包含此数据的数据库表或数据库表。

于 2010-05-25T22:35:30.107 回答