Передача строковых параметров MVC 3 - PullRequest
2 голосов
/ 28 июля 2011

Я пытаюсь передать строковый параметр в 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преобразование

Кстати, я не пытаюсь рекламировать Орегон здесь.Я никогда не был там.Может быть, это хорошее место.

1 Ответ

1 голос
/ 28 июля 2011

Проверьте вашу маршрутизацию.Традиционно URL-адреса, подобные тому, который вы даете, сопоставляют значение («Орегон») с параметром «id», а не с параметром location, который вы пытаетесь использовать.Либо переименуйте параметр, либо измените маршрут, чтобы использовать «{controller} / {action} / {location}».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...