MVC3路由问题

时间:2011-09-13 13:17:46

标签: c# asp.net-mvc-3 razor asp.net-mvc-routing

我正在使用2个MVC3 Razor网站,两个网站都在使用IIS6.5(我希望这是导致此问题的原因)。他们两个我都使用自然类能力调用设置和对象的方法然后重定向到另一个动作。例如:

public ActionResult ApprovePlan(decimal id)
{
    PPS_PLAN_TBL.ApprovePlan(id, UserId);
    PPS_PLAN_TBL ppsPlanTbl = db.PPS_PLAN_TBL.Single(p =>
        p.PpsPlanIdentifier == id
    );
    EMPLEE_TBL executive = dbEmployees.EMPLEE_TBL.Single(n =>
            n.EmployeeUserIdentifier == ppsPlanTbl.ExecutiveUserIdentifier
            && n.PayPeriodIdentifier == CurrentPayPeriod
    );
    EMPLEE_TBL ro = dbEmployees.EMPLEE_TBL.Single(n =>
        n.EmployeeUserIdentifier == ppsPlanTbl.RatingOfficialUserIdentifier
        && n.PayPeriodIdentifier == CurrentPayPeriod
    );

    return RedirectToAction("Index");
}

如您所见,收到一个ID并设置要批准的记录。它由索引页面上的actionlink调用:

<a href='@Url.Action("ApprovePlan", "PerformancePlanSystem", new { Id = item.PpsPlanIdentifier })' title="Approve Plan"><img src="@Url.Content("~/Content/images/thumbsup.png")" alt="Approve Plan" height="16" width="16" /></a>

所有这些中的问题是,我第一次发起呼叫时它第一次工作但所有后续呼叫实际上都到达动作的目的地,就像控制器知道最终目的地一样,忽略了动作(它将会没有陷入断点)和gos直接对那个动作。它非常恼人,我无法弄清楚它为什么会这样做。我知道这是与会话相关的,因为如果我关闭浏览器并重新打开它,链接将再次工作.1次。我想我可以通过将真实视图(.cshtml)附加到我的所有操作来解决这个问题,但这会很痛苦,因为他们什么都不做,而且为了符合508,我将被迫拥有一个古怪的应用程序。

我怀疑MS之外的任何人都可以解释这种行为,但至少我想知道是否有其他人看到这个,因为我发生在运行2个不同应用程序的2个不同环境中的3个不同服务器上。

1 个答案:

答案 0 :(得分:1)

对我来说听起来像某种缓存问题。我建议你调查一下..我现在也会快速查看并报告回来

您使用的是IE吗?这个可以帮助:

How to stop MVC caching the results of invoking an action method?

或许这个更可靠(也更容易):

How can I disable client side and proxy caching in ASP.NET MVC?