我正在尝试在MVC3中传递一个字符串参数。
生成的URL是:
http://localhost:50164/Property/Browse/Oregon
这似乎是带有参数“Oregon”的函数“Browse”中的Property控制器类。
调用正确的函数,但字符串显示为空。
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());
}
当我使用硬编码字符串(Oregon)返回lambda时,我得到了正确的答案。
当我使用参数(字符串位置)返回lambda时,我得到零结果。
当我尝试显示ViewData [“the_location”]时,它是参数的直接副本,它是空白的。也许我不想尝试正确显示它。以下是我的观点:
Location: @Html.Encode(ViewData["the_location"] )
当我调用location.Length时,我得到一个未处理的null异常,但是当我在像“Oregon”这样的硬编码参数上调用Length时,这是有效的。
看起来字符串是空的,但这没有意义,因为当我到达属性/浏览功能时,我在URL中看到“Oregon”。
我开始怀疑是否允许我在MVC中传递字符串作为参数,因为我没有看到任何带字符串参数的示例。
这是未解决问题的延续:
顺便说一下,我不是想在这里推广俄勒冈州。我从来没有去过那里。也许这是一个好地方。
答案 0 :(得分:1)
检查您的路由。传统上,您提供的URL会将值(“Oregon”)映射到“id”参数,而不是您尝试使用的location
参数。重命名参数或更改路线以使用“{controller} / {action} / {location}”。