在我的公共汽车服务MVC项目中,我需要能够在我去路线表时显示公交路线停靠。我有这个ActionLink将查询字符串和页面发送到路由表:@Html.ActionLink("Route Stops", "index", "snRouteStops", new { id=item.busRouteCode}, null)
但是当我到达我的公共汽车路线停止控制器时,如果没有选择,我需要它让我回到路线列表。这部分工作正常,但当我点击路线查看停止时没有任何反应。这是我在busRouteStops控制器的actionResult中的代码:
public ActionResult Index()
{
string busRouteCode = "";
if (string.IsNullOrWhiteSpace(Request.QueryString["busRouteCode"]))
{
if (Request.Cookies["busRouteCode"] == null)
{
return RedirectToAction("index", "snBusRoutes");
}
else
{
busRouteCode = Request.Cookies["busRouteCode"].ToString();
}
}
else
{
busRouteCode = Request.QueryString["busRouteCode"].ToString();
}
var routeStops = db.routeStops.Include(r => r.busRoute).Where(r => r.busRouteCode == busRouteCode).Include(r => r.busStop);
return View(routeStops.ToList());
}
}
答案 0 :(得分:1)
此代码{id=item.busRouteCode}
生成如下查询:
http://snRouteStops/Index?id=somedata
其中somedata = item.busRouteCode。
尝试在查询字符串中查找id或只是将id添加到action params,如:
public ActionResult Index(string id)
答案 1 :(得分:1)
您的主要问题是您正在查找名称为busRouteCode
的查询字符串,但您的操作链接未设置为提供具有该名称的查询字符串。你的行动链接 -
@Html.ActionLink("Route Stops", "index", "snRouteStops", new { id=item.busRouteCode}, null)
配置为将busRouteCode
作为名称为id的参数发送。这意味着URL将如下所示:
/snRouteStops/Index?id=myBusRouteCode
因此,没有名称为busRouteCode
你可以做一些事情来清理它。
//显示id是基于您的代码的字符串
public ActionResult Index(string id)
{
string busRouteCode = "";
if(string.IsNullOrEmpty(id))
{
if (Request.Cookies["busRouteCode"] == null)
{
return RedirectToAction("index", "snBusRoutes");
}
else
{
busRouteCode = Request.Cookies["busRouteCode"].ToString();
}
}
else
{
busRouteCode = id;
}
var routeStops = db.routeStops.Include(r => r.busRoute).Where(r => r.busRouteCode == busRouteCode).Include(r => r.busStop);
return View(routeStops.ToList());
}
}
@Html.ActionLink("Route Stops", "index", "snRouteStops", new { busRouteCode=item.busRouteCode}, null)
这将生成如下所示的链接:
/snRouteStops/Index?busRouteCode=myBusRouteCodeValue
无论如何,您都不应该在MVC控制器操作中使用Request.QueryString []。通过将操作方法配置为查找这些查询字符串值(就像我在示例1中所做的那样),您现在可以在操作方法中获取强类型参数,而不是QueryString []字典中的字符串值。例如,当期望整数作为查询字符串值时,这尤其有用。模型绑定器将负责确保查询字符串值实际上是整数而不是字符串。