2010-05-24 224 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

相关问题