如何在 mvc 中使用 ViewData 传递整数值 asp.net 然后使用存储在 ViewData 中的值与视图中的



例如。

我想在控制器中做这样的事情:

ViewData["dummy"] = 100;

然后在视图中,我希望比较其值,例如:

@if(ViewData["dummy"] = 100)
{
// do some stuff
}

目前,如果我这样做,我会收到一个错误,说 -

Operator "==" cannot be applied to operands of type 'object' and 'int'

尝试if((int)ViewData["dummy"] == 100)

但我也会添加一个空检查和某种"安全转换辅助方法",以便您可以调用即

if(Helper.GetTyped<int>(ViewData["dummy"]) == 100)

或者,可以在类型化视图模型中传递该值

我刚刚测试过的代码:

视图:

@{
ViewBag.Title = "About";
}
<p>
@if ((int)ViewData["dummy"] == 100)
{
<h1> 100</h1>
}
</p>

控制器:

public ActionResult About()
{
ViewBag.Message = "Your application description page.";
ViewData["dummy"] = 100;
return View();
}

我尝试将整数值存储在ViewData中,然后执行

ViewData["dummy"].ToString() == "integer_value_here";

所以基本上,在比较视图中的值时,我将它们转换为字符串,然后进行比较,它有效!!

最好使用它们自己的数据类型来比较值,因此,如果您可以将int值从模型中的控制器传递int会更好,但是如果您只能在ViewData内传递它,则可以将其转换为视图中的intint.TryParse

@if(int.TryParse(ViewData["dummy"].ToString(), out int intValue))
{
if(intValue==100)
{
<p>values are equal</p>
}
else
{
<p>values not equal</p>
}
}
else
{
<p>value is not an integer</p>
}

相关内容

最新更新