繁体   English   中英

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

[英]How to pass an integer value using ViewData in asp.net mvc and then use value stored in ViewData to compare with another integer value in the view?

例如。

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

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)

但我也会添加一个空检查和某种“安全转换辅助方法”,这样你就可以调用 ie

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

我尝试将整数值存储在 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>
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM