1

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

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

Html.Encode(ViewData["lblText"])

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

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

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

我尝试使用 return view() 和 return RedirectToAction() 将 viewdata 和 tempdata 传递给“编辑按钮标签”视图,但没有成功。我错过了一些小事还是有更好的方法来做到这一点?

4

1 回答 1

0

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

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

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

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

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

在您的编辑视图中,您应该执行以下恕我直言;

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

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

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

最后,您有一个局部视图,它采用单个项目并允许您对其进行编辑,称为 labelEdit。

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

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

于 2010-05-24T23:12:22.833 回答