C# asp.net Twitter引导TempData.Add(添加两个错误时出现Alerts.Error错误
我正在使用用于MVC的twitter引导nuget包 在发布到控制器并检查错误时,如果我的模型中有多个错误,则在尝试向TempData添加第二个警报时会出现以下错误:C# asp.net Twitter引导TempData.Add(添加两个错误时出现Alerts.Error错误,c#,asp.net,asp.net-mvc,asp.net-mvc-3,twitter-bootstrap,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Twitter Bootstrap,我正在使用用于MVC的twitter引导nuget包 在发布到控制器并检查错误时,如果我的模型中有多个错误,则在尝试向TempData添加第二个警报时会出现以下错误: 已添加具有相同密钥的项。 // // POST: /Customer/Create [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create(Customer customer) { var er
已添加具有相同密钥的项。
//
// POST: /Customer/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Customer customer)
{
var errors = ModelState.Values.SelectMany(v => v.Errors);
if (ModelState.IsValid)
{
// save to database etc
// redirect to action
}
foreach (var c in errors)
{
TempData.Add(Alerts.ERROR, c.ErrorMessage); // Error is reported here
}
错误消息不同,如下所示-因此必须是Alerts.error只允许出现一次:
有没有办法将两个警报。错误
错误消息添加到TempData
——或者我应该只连接一个字符串,然后用组合的错误消息添加一个错误
如果我将TempData代码更改为:
TempData.Add(Alerts.ERROR,errors.Select(c=>c.ErrorMessage.ToArray());
…视图呈现为:
谢谢,
标记为什么不直接使用
TempData.Add(Alerts.ERROR,errors.Select(c=>c.ErrorMessage.ToArray())
并在视图中迭代错误?TempData
是一个字典,因此尝试添加重复键会导致异常是有意义的。根据显示TempData
内容的方式,您可以将错误消息串接成一个字符串,或者使用具有Guid
附加的键对其进行加密(从而使密钥每次都是唯一的)
一种可能的解决方法(在循环中):
这天真地假设您之前已经格式化了错误消息,并将生成一个长字符串。如果您使用
来显示错误,您可以将每个错误消息包装在
中,然后进行压缩。嗨-谢谢-我尝试过,但视图中只显示System.string[](我在帖子中添加了一个屏幕截图)。是的--您需要迭代错误,例如:if(TempData[Alerts.ERROR]!=null&&TempData[Alerts.ERROR].Length>0){foreach(TempData[Alerts.ERROR]中的字符串消息]{@message}
if (TempData.ContainsKey(Alerts.ERROR))
{
string temp = TempData[Alerts.ERROR].ToString();
TempData[Alerts.ERROR] = string.Concat(temp, c.ErrorMessage);
}
else
{
TempData.Add(Alerts.ERROR, c.ErrorMessage);
}