2010-05-24 217 views
1

我有一個頁面上有一堆標籤和複選框。在此頁面上,項目部署完成後,標籤需要易於定製。ASP MVC從一個視圖到另一個視圖數據(Html.Encode())

所以我做了所有標籤的這種風格:

了Html.Encode(計算機[「lblText」])

我增加了一個叫做「編輯按鈕標籤」,將頁面上的按鈕只有管​​理員才能看到。

當單擊該按鈕時,我想加載另一個只包含兩列表的視圖。一列需要包含當前標籤,另一列應該有用於輸入新標籤的文本框。

然後,一旦做出任何更改,我需要永久更改原始頁面上每個標籤的「lblText」。

我曾嘗試傳遞viewdata和tempdata到「編輯按鈕標籤」視圖使用返回視圖()和返回RedirectToAction()沒有成功。我錯過了一些小的事情嗎?還是有更好的方法來做到這一點?

+0

聽起來像你需要一個新的行動(和可能相關的視圖)在你的控制器,支持你正在談論的「更新」模式。 – Nate 2010-05-24 19:19:12

回答

0

不要使用ViewData是我會說的第一件事。將模型返回到包含標籤的視圖。如果需要,創建一個複合模型。

然後,編輯標籤,轉到一個採用相同模型的視圖,允許您輸入新文本並將結果保存到xml,db,文本文件等等。

所以你可能有這樣的模型;

public class Labels 
{ 
    public List<string> text{ get; set; } 
} 

因此,在你的數據庫層,無論在哪裏,用標籤文本項填充對象。

在你的編輯視圖上,你應該做下面的imho;

<% Html.PartialView("EditLabels", Model); %> 

然後你有一個名爲EditLabels的局部視圖,它會有類似下面的psuedo;

foreach(string item in Model) 
{ 
    <% Html.PartialView("labelEdit", item); %> 
} 

然後最後你有一個局部視圖,它需要一個單一的項目,並允許你編輯它叫做labelEdit。

在我看來,這是在MVC中做到這一點的正確方法,它將整個視圖分解爲多個功能塊並很好地分離關注點。

很明顯,您仍然需要一個ActionResult來發布帖子並影響更改。

+0

這就是我最終做的。謝謝! – 2010-05-25 14:01:19

相關問題