我正在努力在Razor视图中显示Tuple<int, int>
值。
这个Tuple<int, int>
插入TempData["SucceededFailed"]
控制器中,如下所示:
Tuple<int, int> SucceededFailed = new Tuple<int, int>(1, 0);
TempData["SucceededFailed"] = SucceededFailed;
我正在寻找正确的语法,为了在我的视图中显示元组,我尝试了三个但是所有这些都抛出异常。
查看
<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>
错误
'object'不包含'Item1'的定义,也没有扩展名 方法'Item1'接受'object'类型的第一个参数可以是 发现(您是否缺少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'是'type',但用作'variable'
我在这里做错了什么?
答案 0 :(得分:3)
您需要将TempData
括在括号中,让编译器知道它是Tuple<int, int>
:
@(((Tuple<int, int>)TempData["SucceededFailed"]).Item1)
注意:.Item1
之前和@
之后的额外括号。这告诉编译器,您希望将对象放在TempData
中,将其强制转换为Tuple<int, int>
,然后访问该强制转换结果的Item1
属性。