MVC3 Маршрутная проблема - PullRequest
       4

MVC3 Маршрутная проблема

2 голосов
/ 13 сентября 2011

У меня есть 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 и устанавливает запись для утверждения.Он вызывается с помощью ссылки на странице индекса:

<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>

Проблема во всех этих случаях заключается в том, что при первом вызове он срабатывает в первый раз, но все последующие вызовы фактически направляются в пункт назначениядействие, как если бы контроллер знал конечный пункт назначения, игнорирует действие (оно не будет поймано с точкой останова) и переходит непосредственно к этому действию.Это довольно раздражает, и я не могу понять, почему он это делает.Я знаю, что это связано с сеансом, потому что, если я закрою свой браузер и снова открою его, ссылка снова заработает. 1 раз.Я думаю, что я мог бы исправить это, прикрепив реальное представление (.cshtml) ко всем моим действиям, но это было бы больно, потому что они ничего не делали, и для соответствия 508 я был бы вынужден иметь своеобразное приложение.

Я сомневаюсь, что кто-то за пределами MS может объяснить это поведение, но по крайней мере мне интересно, если кто-то еще видит это, поскольку у меня это происходит на 3 разных серверах в 2 разных средах, работающих под управлением 2 разных приложений.

1 Ответ

1 голос
/ 13 сентября 2011

Для меня это похоже на проблему с кэшированием. Я предлагаю вам разобраться в этом ... Я сейчас тоже взгляну и доложу

Вы используете IE? это может помочь:

Как остановить MVC-кэширование результатов вызова метода действия?

А может, этот надежнее (и проще):

Как отключить кэширование на стороне клиента и прокси в ASP.NET MVC?

...