ASP MVC ViewData从一个视图到另一个视图(Html.Encode())

时间:2010-05-24 19:07:07

标签: asp.net-mvc viewdata

我的页面上有一堆标签和复选框。在此页面上,部署项目后,标签需要可以轻松自定义。

所以我用这种风格制作了所有标签:

了Html.Encode(计算机[ “lblText”])

我在页面上添加了一个名为“编辑按钮标签”的按钮,只有管理员才能看到。

单击该按钮时,我想加载另一个只包含两列表的视图。一列需要包含当前标签,另一列应该有文本框供用户输入新标签。

然后,一旦做出任何更改,我需要永久更改原始页面上每个标签的“lblText”。

我已尝试使用return view()并返回RedirectToAction()但未成功将viewdata和tempdata传递到“Edit Button Labels”视图。我错过了一些小问题,还是有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

不要使用ViewData是我要说的第一件事。将模型返回到包含标签的视图。如果需要,创建一个复合模型。

然后,要编辑标签,请转到采用相同模型的视图,允许您输入新文本并将结果保存到xml,db,text文件等等。

所以你可能有这样的模型;

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

因此,在数据库层中,无论在哪里,都要使用标签文本项填充对象。

在您的编辑视图中,您应该执行以下操作;

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

然后你有一个名为EditLabels的局部视图,它会有类似下面的psuedo;

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

然后最后你有一个局部视图,它只占用一个项目并允许你编辑它,名为labelEdit。

在我看来,这是在MVC中执行此操作的正确方法,以便将整个视图分解为功能块并很好地分离关注点。

显然,您仍需要一个ActionResult来发帖并影响更改。