2010-05-25 30 views
3

假設我有一個簡單的ASP.NET MVC網站和兩個視圖。視圖使用以下路由:/ Foo和/ Foo/Bar。如何在ASP.NET MVC網站的URL中存儲有用的值並使其傳播?

現在,讓我們說我想使用URL來指定(只是爲了舉例)網站的背景顏色。我希望我的路線是,例如/ Blue/Foo或/ Green/Foo/Bar。如果我從視圖中調用Html.ActionLink,我希望藍色或綠色值傳播,而不必傳入。因此,例如,如果我調用Html.ActionLink(「Bar」,「Foo 「)/ Blue/Foo,我想/ Blue/Foo/Bar回來。

我該如何做到最好?

(原諒我,如果我失去了現有的職位。這是我很難簡潔表述,所以我不太清楚該怎麼尋找。)

回答

1

就我個人而言,我認爲這將是長期實施和維護「黑客」的真正方法。

爲什麼不使用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> 
... 

你現在可以做你收到計算機[「的backgroundColor」]值絕對一切。 用JavaScript連接起來,你可以很容易地在你的html元素上進行顏色切換。

我用鏈接和可選參數的固定字符串值做了它,但是您可以很容易地設置一個Enum或包含此數據的數據庫表。

+0

在原始問題中澄清了這一點:我不想將值傳遞給Html.ActionLink。我正在考慮使用會話變量和自定義幫助器方法,但我正在尋找其他想法。 – 2010-05-25 22:43:08

相關問題