我有一个按钮,它使用代码隐藏方法来做事。完成后,我有一个 Redirect.Response 应该转发用户并使用路由数据字符串来获取所有匹配它的产品。
相反,它会将用户正确地转发到目标 URL([domain]/ScreeningDateTime/a38eceeb-5753-4156-ae2d-6a74cf7fef1e-64722426),但会显示该表中的所有结果,而不仅仅是与 RouteData 字符串匹配的结果。
我想注意几点:我可以输入 [domain]/ScreeningDateTime?id=1 并让它正常工作。在调试(VS2013.3Pro)中,如果我固定 InternalId,它会在初始页面上正确显示字符串“a38eceeb-5753-4156-ae2d-6a74cf7fef1e-64722426”。在 ScreeningDateTime 页面上,它没有。
为简洁起见删除了一些内容的代码(我已经对其进行了测试,因为它显示的结果相同):
从初始页面
Response.Redirect(
GetRouteUrl("ScreeningsByDateTimeRoute", new { internalId = InternalId }));
来自 Global.asax
void RegisterCustomRoutes(RouteCollection routes)
{
routes.MapPageRoute(
"ScreeningsByDateTimeRoute",
"ScreeningDateTime/{internalId}",
"~/ScreeningDateTime.aspx"
);
*More Routes*
从后面的 ScreeningDateTime 代码(目标页面):
public IQueryable<Screening> GetProducts(
[QueryString("id")] int? id,
[RouteData] string internalId)
{
var _db = new ProductContext();
IQueryable<Screening> query = _db.Screenings;
if (id.HasValue && id>0)
{
query = query.Where(p => p.ScreeningID == id);
}
if (!String.IsNullOrEmpty(internalId))
{
query = query.Where(p =>String.Compare(p.InternalId,internalId) == 0);
}
return query;
}
如果寻找修复的时间比我想承认的要长。任何帮助将不胜感激。:)
谢谢