如何在ASP.NET MVC中使用ViewData传递整数值,然后使用存储在ViewData中的值与视图中的另一个整数值进行比较?

时间:2018-09-24 14:00:42

标签: c# asp.net asp.net-mvc

例如。

我想在控制器中执行以下操作:

ViewData["dummy"] = 100;

,然后在视图中,我希望将其值进行比较:

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

当前,如果执行此操作,则会出现错误提示-

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

3 个答案:

答案 0 :(得分:1)

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

但是我还要添加一个空检查和某种“安全转换帮助方法”,以便您可以调用

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

或者您可以在键入的ViewModel中传递该值

我刚刚测试过的代码:

查看:

@{
    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();
}

答案 1 :(得分:0)

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

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

因此,基本上,在比较视图中的值时,我将它们转换为字符串,然后进行了比较,然后就可以了!

答案 2 :(得分:0)

最好使用自己的数据类型比较值,因此,如果您可以通过模型中的控制器传递int值,因为int会更好,但是如果您只能在ViewData中传递它,则可以将其转换为int在带有int.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>
}