Получить данные маршрута из запроса - PullRequest
4 голосов
/ 04 ноября 2010

Я занимаюсь разработкой веб-приложения с помощью asp.net mvc 2. В этом приложении есть контроллер с некоторыми асинхронными операциями, которые возвращают json или ajax ... Я называю его jquery и отлично работает!

Мой сценарий находится на MasterPage, поэтому эти операции могут вызываться любым представлением, которое наследуется от этой MasterPage.

У меня вопрос: откуда мне знать ... что такое контроллер и действие, которое запрашивает асинхронную операцию?

Я пробовал это:

if (this.RouteData.Values["controller"] == "Product" && this.RouteData.Values["action"] == "Index") {    
}

но при этом получается текущее действие (моё ассинкционное действие ... или ... "ЭТО" действие!), Я хочу запрос.

Я видел это, потому что, если запрос пришел из Home / Index или Home / Contact или Customer / Index или Product / Index, мой результат json может отличаться, поэтому я хотел бы проверить, что такое контроллер и действие.

спасибо!

---- Отредактировано

Это система контроля работы моего клиента. Я делаю что-то вроде этого:

//every second I get info in my assync action:
$(document).ready(function () {
  var interval = window.setInterval(GetJobs, 1000);
});

function GetJobs() {

        $.getJSON('<%=Url.Action("Index", "AssyncJob", new { area = "Admin"}) %>', function (r) {

            /// ----------- Info in MasterPage (All views need it) ------------ //
            // setup the time of server... 
            $("#time").html(r.time);                
            // setup the jobs are running... (
            $("#running").html("");
            if (r.jobcount == 1) 
               $("#running").html("There is one job running!");
            else if(r.jobcount > 1) 
               $("#running").html(r.jobcount + " jobs running!");


            /// ----------- Info in Home/Index ------------ //

            if ($("#jobstoped")) { $("#jobstoped").html(r.jobstoped); }

            // get a list of jobs... (in my action this info is in Cache)
            if (r.jobs != null) {
                $(r.jobs).each(function () {
                    if ($("#job" + this.id)) {

                        if (this.IsRunning) {
                            if (!$("#job" + this.id).hasClass("running")) {
                                $("#job" + this.id).addClass("running");
                            }
                        } 
                        else if (this.IsStoped) {
                            if (!$("#job" + this.id).hasClass("stoped")) {
                                $("#job" + this.id).addClass("stoped");
                            }
                        }
                        else if (this.IsEnding) {
                            if (!$("#job" + this.id).hasClass("finished")) {
                                $("#job" + this.id).addClass("finished");
                            }
                        }

             // --- there is a lot of info and rules that I fill for each job in list


                    }
                });

            }
        });

}

Я возвращаю некоторую информацию и работает нормально, но мне нужно возвращать список заданий только для действия Index на контроллере Home, потому что это ... Мне нужно знать, по какому маршруту запрашиваются действия assync ... для улучшения производительности и избегайте ненужной информации!

Ну, если вы можете помочь моей ... Я был бы очень признателен! = D * * тысяча двадцать-семь

Еще раз спасибо!

1 Ответ

3 голосов
/ 04 ноября 2010

Если ваш JSON будет отличаться в зависимости от того, какой у вас маршрут, почему бы не разделить разные маршруты на разные действия, тогда вам не нужно будет выполнять проверку, о которой вы просите.Это сделало бы код чище и проще для чтения, чем наличие множества блоков if-else в одном действии, чтобы определить, какой ActionResult следует возвращать в представление.

...