我有一个用于跟踪门票和门票时间的应用程序。
在该应用程序中,我有一个时间控制器,将显示所有输入的时间。
[Authorize]
[RouteArea("Work", AreaPrefix = "")]
[RoutePrefix("Company/{companyId:int}/Client/{clientId:int}/Ticket/{ticketId:int}")]
public class TimeController : Controller
{
private ApplicationDbContext db = new ApplicationDbContext();
[Route("Time")]
public ActionResult Index(int ticketId, int clientId, int companyId)
{
if (ticketId == 0)
{
var work = db.Time
.Include(c => c.Ticket)
.Where(c => c.Ticket.ClientId == clientId)
.OrderByDescending(c => c.Date)
.ToList();
return View(work);
}
else
{
var work = db.Time
.Include(c => c.Ticket)
.Where(c => c.TicketId == ticketId)
.OrderByDescending(c => c.Date)
.ToList();
return View(work);
}
}
如果我传递ticketId,它将过滤与该票证相关的所有工作。
http://somedomain.com/Company/1/Client/1/Ticket/1/Time
当我想查看与客户有关的所有工作(不是特定于故障单)时,我将为ticketId传递0,例如:
http://somedomain.com/Company/1/Client/1/Ticket/0/Time
当我在Visual Studio调试器和本地IIS中运行它时,它完美地工作。
当我将其发布到生产服务器时,0将导致找不到404页面。
对于可能是什么原因的任何想法都将不胜感激。
答案 0 :(得分:0)
现在我觉得自己像个白痴。我发现了问题。
在我的索引视图中,我有一个html.action(ChildActionOnly),它抓住并在顶部显示了票证名称。当ticketId为0时,导致找不到。
我将其更改为:
{{1}}
它的效果与预期一致。