В моей программе MVC Asp.net у меня есть метод действий в контроллере, подобном этому. Есть две части кодов, которые выполняют ту же функциональность. Вопрос в том, почему коды комментариев не работают? (Я проверил представление, коды комментариев не могут генерировать что-либо, что я хочу видеть, в то время как другой может.) Возможно, он имеет какое-то отношение к циклу for, потому что переменная i
исчезают из памяти после конца цикла. Любая мысль стоит того, спасибо.C#: IEnumerable не работает снаружи для цикла
//
// GET: /Account/Register
[AllowAnonymous]
public ActionResult Register(string code, string state)
{
……
var departments = new List<IEnumerable<SelectListItem>>();
//functionally equal, but not work.
// for (int i=0; i< db.Settings.Find(1).MaxDepartmentLevel;i++)
// {
// departments.Add(ToSelectListItems(db.Departments.Where(r => r.Level == i+1)));
//
// }
//these work.
departments.Add(ToSelectListItems(db.Departments.Where(r => r.Level == 1)));
departments.Add(ToSelectListItems(db.Departments.Where(r => r.Level ==2)));
departments.Add(ToSelectListItems(db.Departments.Where(r => r.Level == 3)));
var registerViewModel = new RegisterViewModel()
{
OpenId = wechatUserAccessToken.openid,
Departments = departments,
AvatarImageUrl = avatarImageUrl.TrimEnd('0') + "96"
};
return View(registerViewModel);
}
Edit: db.Settings.Find(1).MaxDepartmentLevel
= 3.
Если вы хотите сохранить переменную я, почему бы вам не сделать что-то вроде этого: INT I = 0 ; для (i = 0; i r.Level == i + 1))); } –
Какое значение '' 'db.Settings.Find (1) .MaxDepartmentLevel'''? – tym32167
это не тот же код, вы уверены, что db.Settings.Find (1) .MaxDepartmentLevel == 3, кажется, это 0 –