Как передать целочисленное значение с помощью ViewData в asp.net mvc, а затем использовать значение, сохраненное в ViewData, для сравнения с другим целочисленным значением в представлении? - PullRequest
0 голосов
/ 24 сентября 2018

Например,

Я хочу сделать что-то подобное в контроллере:

ViewData["dummy"] = 100;

, а затем в представлении я хочу сравнить его значение как:

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

В настоящее время, если я делаю это, я получаю сообщение об ошибке -

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

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

Я попытался сохранить целочисленное значение в ViewData, а затем сделал

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

Итак, сравнивая значения в представлении, я преобразовал их в строку, а затем сравнил, и это работает !!

0 голосов
/ 24 сентября 2018

Лучше сравнивать значения, используя их собственные типы данных, поэтому, если вы можете передать значение 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>
}
0 голосов
/ 24 сентября 2018

Попробуйте if((int)ViewData["dummy"] == 100)

, но я бы также добавил нулевую проверку и какой-нибудь "безопасный метод приведения типов", чтобы вы могли вызывать, например,

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

иливы можете передать это значение в типизированном коде ViewModel

, который я только что протестировал:

View:

@{
    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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...