ASP.NET MVC - Выпадающее расположение каскадом

Я полагаю, что вы можете использовать тест контроллера типов вместо создания экземпляра вашего контроллера, а затем использовать метод RSpec assigns ( docs ) для проверки переменных вашего экземпляра, что-то вроде этого: [117 ]

RSpec.describe DashboardsController, :type => :controller do
   context "with session" do
      # ...
      it "executes other functions" do
        expect(assigns(:org_data)).not_to be_nil
      end
    end
end

https://relishapp.com/rspec/rspec-rails/docs/controller-specs

Также, если вы хотите проверить поток и выполнить отладку ваш код, вы можете использовать драгоценные камни pry, pry-rails и pry-nav как указано @Marek Lipka.

7
задан Ros 1 April 2009 в 14:51
поделиться

4 ответа

Можно хотеть считать эту ПОДСКАЗКУ.

В этой подсказке Stephen Walter демонстрирует три метода создания каскадных выпадающих списков. Во-первых, он показывает Вам, как изменить список опций, отображенных одним выпадающим списком, когда опция в другом выпадающем списке изменяется. Во-вторых, он показывает Вам, как выставить данные для выпадающих списков посредством действия контроллера. Затем, он показывает Вам, как захватить данные для выпадающих списков от веб-сервисов.

8
ответ дан 6 December 2019 в 14:09
поделиться

Используемый вами совет: Совет № 41 для ASP.NET MVC - создание каскадных выпадающих списков с помощью Ajax от Стивена Уолтера было не сделано с MVC Realease 1.0

. Как таковой, он отлично работает с загруженным проектом (после исправления некоторых небольших проблем), но когда вы пытаетесь включить его в MVC Release 1.0, вещи ломаются.

Например: в загруженном проекте сценарии находятся в папке содержимого, в версии 1.0 сценарии находятся в папке сценариев.

Также некоторые (если не все) файлы * .js в выпуске изменилось от ставок и ОСАГО. Это тоже может быть проблемой.

Я скачал его проект (исправил несколько мелких проблем), и он хорошо работал в этом проекте (файлы * .js).

Например,

Я исправил следующее как:

ИЗМЕНЕНИЕ : \ Views \ Home \ index.aspx

<label for="Makes">Car Make:</label>  
<%= Html.DropDownList("--Select Make--", "Makes") %>

TO:

<label for="Makes">Car Make:</label>
<%= Html.DropDownList("Makes", (SelectList)ViewData["Makes"], "--Select Make--")%>

Итак, как вы видите, есть некоторые проблемы.

Эти типовые проблемы с учебниками и блогами многочисленны; все хотят, чтобы их считали «экспертами» по выпускаемым новым технологиям, поэтому они пишут учебные пособия по бета-версиям и ОСАГО. В результате у «Эксперта» будет материал, который не работает с финальной версией.

Вам нужно найти профессионала, который разместил учебные пособия. Профессионал гарантирует, что их учебники работают. Под профессионалом я подразумеваю профессионального тренера в этой области.

У Стивена Вальтера есть один из лучших блогов и много хороших вещей, но помните, что он является евангелистом Microsoift. Он пишет книги по технологиям MS, поэтому ему нужно быть активным в мире блогов, чтобы рассказать о передовых технологиях. Это делает его экспертом, поэтому его книги можно продавать.

1
ответ дан 6 December 2019 в 14:09
поделиться

Возможно, вы захотите взглянуть на сообщение , которое я сделал пару недель назад именно по этому

. Сначала нам нужно настроить действие контроллера JsonResult.

/// <summary></summary>  
/// Get Models
/// <param name="makeID" />  
/// <returns></returns>  
public JsonResult GetModels(string id)  
{       
   JsonResult result = new JsonResult();       
   var filteredModels = from model in homeViewModel.Models
                        where model.MakeID.ToString() == id
                        select model;       result.Data = filteredModels.ToList();
   result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;    
   return result;  
} 

Этот метод теперь дает нам возможность использовать изящный $. GetJSON jquery. вызов. Подпись для вызова следующая

jQuery.getJSON( url, [ data ], [ callback(data, textStatus) ] )

Учитывая, что у нас есть 2 раскрывающихся списка, один для Makes и другой для моделей, вот так.

   Html.DropDownListFor((model) => model.MakeID, new SelectList(Model.Makes, "ID", "Description"))    
   Html.DropDownListFor((model) => model.ModelID, new SelectList(Model.Models, "ID", "Description"))

мы можем включить следующий фрагмент jquery

//Hook onto the MakeID list's onchange event  
$("#MakeID").change(function() {   
   //build the request url   
   var url = '<!--Url.Content("~/")-->' + 'Home/GetModels';

   //fire off the request, passing it the id which is the MakeID's selected item value   
   $.getJSON(url, { id: $("#MakeID").val() }, function(data) {    
      //Clear the Model list    
      $("#ModelID").empty();    
      //Foreach Model in the list, add a model option from the data returned    
      $.each(data, function(index, optionData) {       
         $("ModelID").append("<option value=" + optionData.ID +">"+ optionData.Description +"</option>"  );    
      });
   });  
}).change();

Извините за бессовестный плагин: (

4
ответ дан 6 December 2019 в 14:09
поделиться
2
ответ дан 6 December 2019 в 14:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: