Как я могу проанализировать значение для отображения в виде целого числа в режиме razor?

#asp.net-mvc #asp.net-mvc-3 #razor

#asp.net-mvc #asp.net-mvc-3 #razor

Вопрос:

У меня есть

     @{
    var to = Model.PageMeta.TestID == "00" ? "All Tests" : Model.PageMeta.TestID;
    }
  

Значение TestID может быть «00»,»01″,»02″ и т. д

Что я хотел бы сделать, так это отобразить это как «Все тесты», «1», «2» и т.д. Другими словами, я хочу просто показать значение без начального нуля.

Я пытался

 parseInt(Model.PageMeta.TestID) 
  

но это выдало мне ошибку компилятора.

Ответ №1:

Попробуйте Int32.Parse() метод.

Комментарии:

1. Сообщение об ошибке компилятора: CS0173: Тип условного выражения не может быть определен, поскольку нет неявного преобразования между ‘string’ и ‘int’

2. Какое значение передается в качестве параметра методу Int32.Parse(). Например, Int32.Parse(«1») возвращает 1. Вместо Int32.Parse вы можете использовать Int32. Попробуйте проанализировать и посмотреть, можно ли преобразовать строку imput в целое число или нет.

Ответ №2:

Самый простой способ сделать это — использовать TrimStart

Комментарии:

1. Это бесполезно, так как это приведет к преобразованию «00» в строку. Пусто, используйте myint = Convert. ToInt32 (переменная). Редактировать: Nvm, это сработало бы для этого, но для других случаев, когда вы хотели бы иметь 0, это не сработало бы

2. @Serge да, я понял это сразу после добавления своего комментария, но все же лучше использовать Convert, так как таким образом вы получите действительное целое число, что является основным вопросом, который задавал OP.

Ответ №3:

Если это строка, используйте Convert.ToInt32()

 using System;

public class Test
{
    public static void Main()
    {
            string s = "00";
            string s2 = "04";

            int i = Convert.ToInt32(s);
            int i2 = Convert.ToInt32(s2);

            Console.WriteLine("{0}|{1}", i, i2);
    }
}
  

Вывод:

 0|4
  

По сравнению с TrimStart:

 using System;

public class Test
{
    public static void Main()
    {
            string s = "00";
            string s2 = "04";

            Console.WriteLine("{0}|{1}", s.TrimStart('0'), s2.TrimStart('0'));
    }
}
  

Вывод:

 |4
  

Ответ №4:

На самом деле самым простым, но наиболее полным было бы это:

  @{
 var to = Model.PageMeta.TestID == "00" ? 
  "All Tests" : 
         (Model.PageMeta.TestID.StartsWith("0") ? 
                 Model.PageMeta.TestID.Substring(1) : 
                 Model.PageMeta.TestID);
  }