Я пытаюсь передать строковый параметр в MVC3.
Генерируемый URL-адрес:
http://localhost:50164/Property/Browse/Oregon
Это, кажется, контроллер свойствакласс в функции «Обзор» с параметром «Орегон».
Правильная функция вызывается, но строка кажется пустой.
public ViewResult Browse(string location)
{
//counted_properties: 3 counted_properties_here: 0
ViewData["counted_properties"] = db.Properties.Count(); // debug 3 total
ViewData["counted_properties_here"] = db.Properties.Where(p => p.location == "Oregon").Count(); // debug 1 (the right answer!)
//return View(db.Properties.Where(p => p.location == tmp_location).ToList()); // 0 (bad!)
ViewData["the_location"] = location;
int size = tmp_location.Length; // unhandled null exception when tmp_location = location
ViewData["location_length"] = size;
// return View(db.Properties.Where(p => p.location == "Oregon").ToList()); // Right! but hardcoded
return View(db.Properties.Where(p => p.location == location).ToList());
}
Когда я возвращаю лямбду, используя хардзакодированная строка (штат Орегон), я получаю правильный ответ.
Когда я возвращаю лямбду, используя параметр (расположение строки), я получаю нулевые результаты.
Когда я пытаюсь отобразить ViewData ["the_location"], который является прямой копией параметра, он пуст.Возможно я не пытаюсь отобразить это правильно.Вот мой взгляд:
Location: @Html.Encode(ViewData["the_location"] )
Когда я вызываю location.Length, я получаю необработанное исключение NULL, но это работает, когда я вызываю Length для жестко закодированного параметра, такого как "Oregon".
Похоже, строка как-то пуста, но это не имеет смысла, так как я вижу «Oregon» в URL, когда он попадает в функцию property / browse.
Я начинаю задумываться, неразрешено передавать строки в качестве аргументов в MVC, поскольку я не видел примеров со строковыми параметрами.
Это продолжение нерешенной проблемы:
C # / ASP.NET lambdaпреобразование
Кстати, я не пытаюсь рекламировать Орегон здесь.Я никогда не был там.Может быть, это хорошее место.