C# 如何将列表字符串传递到TempData Asp.Net
我有一个Tempada来显示msg错误中的错误列表,我创建了一个列表,在我的foreach中,每个错误都找到它,我在列表中添加一个错误,然后在TempData中显示这个列表C# 如何将列表字符串传递到TempData Asp.Net,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个Tempada来显示msg错误中的错误列表,我创建了一个列表,在我的foreach中,每个错误都找到它,我在列表中添加一个错误,然后在TempData中显示这个列表 public IActionResult Demo() { List<string> LogErros = new List<string>(); try { foreach (var item in somethings) {
public IActionResult Demo()
{
List<string> LogErros = new List<string>();
try
{
foreach (var item in somethings)
{
// if have some error add to list
LogErros.add();
}
if (LogErros.Count > 0)
{
TempData["error-message"] = LogErros;
}
}
return View();
}
public IActionResult Demo()
{
List LogErros=新列表();
尝试
{
foreach(某些事物中的var项)
{
//如果有错误,请添加到列表中
LogErros.add();
}
如果(LogErros.Count>0)
{
TempData[“错误消息”]=LogErros;
}
}
返回视图();
}
我试试这个:
@if (TempData["error-message"] != null)
{
<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">x</button>
@TempData["error-message"]
</div>
}
@if(TempData[“错误消息”]!=null)
{
x
@TempData[“错误消息”]
}
但是得到错误
TempData[“错误消息”]
将字符串列表存储为对象。所以你需要先得到它,将它转换成一个字符串列表,循环遍历每一个字符串并渲染它
Razor基本上调用表达式上的ToString
(在您的例子中是object
),因此您可以看到当前的结果
这应该行得通
@if (TempData["error-message"] != null)
{
var errors = TempData["error-message"] as List<string>;
<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" >x</button>
@foreach(var errorMessage in errors)
{
<p>@errorMessage</p>
}
</div>
}
现在,在视图或布局中,可以通过使用带有messages
属性的div元素来调用此标记帮助器
<div messages></div>
请随时更新标记帮助程序代码,以呈现消息所需的HTML标记
对于非Asp.Net核心项目,您可以创建一个html帮助程序方法,该方法也可以执行相同的操作。问题是您正在视图中显示@TempData[“错误消息”]
,但TempData
是,这意味着当您访问该键上的值时,该值是一个对象
即使您强制转换为其实际值(列表
),它也会隐式调用.ToString()
,如果您只使用@
符号在页面上渲染,它不会自动显示列表的内容
您需要做的第一件事是将对象强制转换到列表中:
var errorMessageList=TempData[“错误消息”]作为列表;
然后可以迭代列表中的值:
var errorMessageList = TempData["error-message"] as List<string>;
@if (errorMessageList != null)
{
<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">x</button>
@foreach(var message in errorMessageList)
{
@message
}
</div>
}
var errorMessageList=TempData[“错误消息”]作为列表;
@如果(errorMessageList!=null)
{
x
@foreach(errorMessageList中的var消息)
{
@信息
}
}
当然,你必须按照你想要的格式,也许应该用逗号分隔?也许应该在他们自己的
。。。这取决于您。您应该向我们展示显示此信息的代码。我想你的问题是因为对列表中的.ToString()
的调用不会显示列表中的所有项目,它会显示System.Collections.Generic.List1[System.String]
像你的图像所显示的那样shum:)不理解你的建议。你怎么知道OP使用的是ASP.Net Core?Thx对于你和maccettura来说,也许不是更好的方式,但是对于我现在所需要的来说,它工作得很好,@可以为遗留MVC和net创建CodeNotFound扩展方法core@JasonRonerTagHelper功能仅适用于ASP.Net核心而不适用于ASP.Net MVC,因此扩展方法在这里没有太大帮助。CodeNotFound,可能是因为IActionResult heheh
<div messages></div>
var errorMessageList = TempData["error-message"] as List<string>;
var errorMessageList = TempData["error-message"] as List<string>;
@if (errorMessageList != null)
{
<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">x</button>
@foreach(var message in errorMessageList)
{
@message
}
</div>
}