2015-07-22 2 views
0

Я пытаюсь вставить значения из ViewBag во входные данные через javascript и динамически создавать значение.Значение ViewBag, возвращающее неправильный номер

Я называю значение employeeID, который сделан с контроллером

public string GetEmployeeID(out string idMethod) 
{ 
     string ee_Id = string.Empty; 
     ClientEmployeeSetupDefaults ee_Setup = this.dbContext.ClientEmployeeSetupDefaults.FirstOrDefault(c => c.ClientID == GlobalVariables.Client); 
     string nextIdSuffix = string.Empty; 
     idMethod = ee_Setup.EmployeeIDMethod; 
     switch (idMethod) 
     { 
      case IDMethod.Sequence: 
       ee_Id = NextEmployeeID(ee_Setup.EmployeeIDNext, "", out nextIdSuffix); 
       break; 
      case IDMethod.PrefixPlusSeq: 
       ee_Id = NextEmployeeID(ee_Setup.EmployeeIDNext, ee_Setup.EmployeeIDPrefix, out nextIdSuffix); 
       break; 
     } 
     if (nextIdSuffix != string.Empty) 
     { 
      ee_Setup.EmployeeIDNext = nextIdSuffix; 
      this.dbContext.SaveChanges(); 
     } 
     return ee_Id; 
} 

с ViewBag

@{ 
ViewBag.Title = "CreateProcess"; 
string employeeID = @ViewBag.EmployeeID.ToString(); 
var LoginCode = @ViewBag.LoginCode; 
} 

Ее вставленной с JavaScript

<script> 
$(document).ready(function() 
{ 
    alert('doc ready happened ' + @employeeID + ' - ' + @LoginCode); 
    document.getElementById('LoginCode').value = @LoginCode; 
    document.getElementById('EmployeeIDs').value = @employeeID.ToString(); 

}); 
</script> 

Я отлаженная все путь и каждый раз на employeeID 010015001 он возвращает 2103809 независимо от того, будет ли он извлекаться из базы данных динамически или если я жестко задал значение.

В ходе этого процесса также проходит через этот метод

public ActionResult CreateProcess(string d, string p, string e, string c, string pp) 
    { 
     string method; 
     List<Id_Name> Profiles = GetAvailableProfiles(p, d); 
     ViewBag.Profiles = Profiles; 
     ViewBag.LoginCode = GetLoginCode(); 
     string eeID = GetEmployeeID(out method); 
     ViewBag.EmployeeID = eeID.ToString(); 
     ViewBag.IDMethod = method; 
     ViewBag.SelectedDepartment = d; 
     ViewBag.SelectedPosition = p; 
     ViewBag.SelectedEEClass = c; 
     ViewBag.SelectedEStatus = e; 
     ViewBag.DefaultProfile = Profiles[0].ID; 
     xxx.SignOn = this.dbContext.xxx.Where(obpt => obpt.TaskType == xxx.SignOn && obpt.SetupID == Profiles[0].ID).FirstOrDefault(); 
     ViewBag.SignOnTask = SignOn.TaskID; 
     return View(); 
    } 

Я не могу понять, почему он вернется, что случайное число и почему через все ее отладки показывает правильный 010015001 но освежит он загружает в плохой номер.

+1

Вы мне должны, используя модель не viewbag для этих данных. – Marko

ответ

2

Целые числа с начальным нулем указаны в восьмеричной (базовая 8) нотации.

010015001 (восьмеричное) = 2103809 (десятичное)

Если employeeID строка содержит целое число в десятичной форме, вы должны раздеться ведущий ноль:

string employeeID = @ViewBag.EmployeeID.ToString().TrimStart(new char[]{'0'}); 
+0

Спасибо, Игорь. Это полезно, но иногда идентификатор должен начинаться с 0. – TheDizzle

+0

Затем установите его как строку, то есть 'document.getElementById ('EmployeeIDs'). Value = '@ employeeID.ToString()';'. Обратите внимание на цитаты вокруг значения Razor. –

+0

@Igor: Очень приятно поймать. –

Смежные вопросы