在视图中显示元组<整数、整数>值



我很难在Razor视图中显示Tuple<int, int>值。该Tuple<int, int>插入控制器的TempData["SucceededFailed"]中,如下所示:

Tuple<int, int> SucceededFailed = new Tuple<int, int>(1, 0);
TempData["SucceededFailed"] = SucceededFailed;

我正在寻找正确的语法,为了在我的视图中显示Tuple,我尝试了三个,但都抛出了异常。

查看

<tr>
<td>
<h3>Result</h3>
<h4>Succeeded:</h4>
<h4>Failed:</h4>
</td>
<td>
@if (TempData["SucceededFailed"] != null)
{
<h3></h3>
<h4>@{(Tuple<int, int>)TempData["SucceededFailed"].Item1;}</h4>
<h4>@{(Tuple<int, int>)TempData["SucceededFailed"].Item2;}</h4>
}
</td>
</tr>

以上代码在以下行失败:

<h4>@{(Tuple<int, int>)TempData["SucceededFailed"].Item1;}</h4>

错误

只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句

我还尝试了以下操作:

@if (TempData["SucceededFailed"] != null)
{
<h3></h3>
<h4>(Tuple<int, int>)@TempData["SucceededFailed"].Item1</h4>
<h4>(Tuple<int, int>)@TempData["SucceededFailed"].Item2</h4>
}

哪个失败在:

<h4>(Tuple<int, int>)@TempData["SucceededFailed"].Item1</h4>

错误

"对象"不包含"Item1"的定义,也没有扩展接受"object"类型的第一个参数的方法"Item1"可以是已找到(您是否缺少using指令或程序集引用?)

最后我尝试了以下代码,这是唯一的代码,给了我正确的语法高亮显示:

@if (TempData["SucceededFailed"] != null)
{
<h3></h3>
<h4>@(Tuple<int, int>)@TempData["SucceededFailed"].Item1</h4>
<h4>@(Tuple<int, int>)@TempData["SucceededFailed"].Item2</h4>
}

哪个失败在:

<h4>@(Tuple<int, int>)@TempData["SucceededFailed"].Item1</h4>

错误

"System.Tuple"是一种"类型",但使用起来像"变量">

我做错了什么?

您需要将TempData包装在括号中,让编译器知道它是Tuple<int, int>:

@(((Tuple<int, int>)TempData["SucceededFailed"]).Item1)

注:.Item1之前和@之后的额外括号。这告诉编译器,您要获取TempData中的对象,将其强制转换为Tuple<int, int>,然后访问该强制转换结果的Item1属性。

最新更新