我的页面上有一堆标签和复选框。在此页面上,部署项目后,标签需要可以轻松自定义。
所以我用这种风格制作了所有标签:
了Html.Encode(计算机[ “lblText”])
我在页面上添加了一个名为“编辑按钮标签”的按钮,只有管理员才能看到。
单击该按钮时,我想加载另一个只包含两列表的视图。一列需要包含当前标签,另一列应该有文本框供用户输入新标签。
然后,一旦做出任何更改,我需要永久更改原始页面上每个标签的“lblText”。
我已尝试使用return view()并返回RedirectToAction()但未成功将viewdata和tempdata传递到“Edit Button Labels”视图。我错过了一些小问题,还是有更好的方法来做到这一点?
答案 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来发帖并影响更改。