28 января 2010

ASP.NET MVC и jQuery – Dynamic DropDowns

Встречаются ситуации, когда при разработке приложения вам нужно иметь выпадающий список, значения которого зависят от выбранного значения в другом выпадающем списке. Классический пример – форма обратной связи, подгружающей значения штатов и областей на основании выбранной страны. Например, если я выберу «United States», то во втором списке я хочу получить соответсвтующие штаты: New York, Alabama, Texas и т.д. Если же я выберу «Canada» - области Nova Scotia и Ontario. К счасть с использованием ASP.NET MVC и jQuery достичь такой функциональности довольно просто. А главное мы сможем это сделать без постбэков, используя jQuery AJAX.

Для начала убедитесь, что вы ссылаетесь на библиотеку jQuery, желательно в теге HEAD. Для этого примера взята верся jQuery 1.4. Вы можете скачать ее локально, либо использовать сервис Google:

<script src="/Scripts/jquery-1.4.min.js"type="text/javascript"></script>

или

<scriptsrc="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"></script>

Теперь наш тестовый HTML. Как можно увидеть список стран заранее заполнен и по-умолчанию выбрано пустое значение.

<table>
 <tr>
  <th>Country:</th>
  <td>
   <select id="countries">
    <option> -- Select a Country -- </option>
    <option value="1">United States</option>
    <option value="2">Canada</option>
    </select>
  </td>
 </tr><tr>
  <th>State:</th>
  <td><select id="states"></select></td>
 </tr>
</table>

Это наш контроллер, который будет снабжать нас странами и областями для выбранной страны

 var list = new object[] {};

 switch (countryID) {
  case 1:
   list = new object[] {
    new { value = 1, name = "Alabama" },
    new { value = 2, name = "Alaska" },
    new { value = 3, name = "California" }
   };
   break;
  case 2:
   list = new object[] {
    new { value = 1, name = "Ontario" },
    new { value = 2, name = "Quebec" },
    new { value = 3, name = "Nova Scotia" }
   };
   break;
 };

 return Json(list);
}

 

Значение специально захардкожены для простоты демонстрации. В реально жизни их стоить грузить из, например, базы данных или xml файла. Обратите внимание на сигнатуру метода. Мы принимаем единственный параметр countryID, который определяет какие данные должны быть возвращены. Мы также установили тип возвращаемого значения в JsonResult. Это означает, что объект, возвращаемый из метода будет сериализован как JSON объект, который может быть легко использован из jQuery. Закончив с контроллером перейдем к коду jQuery.

<script type="text/javascript">
 $(document).ready(function() {    
  $("#countries").change(function() {     
   $.post("/Home/GetStates/", { countryID: $(this).val() }, function(data) {
    populateDropdown($("#states"), data);
   });
  });
 });

 function populateDropdown(select, data) {
  select.html('');
  $.each(data, function(id, option) {
   select.append($('<option></option>').val(option.value).html(option.name));
  });       
 }
</script>

 

Разберем его. Сначала мы привязываем событие к выпадающему списку с выбором страны. Когда происходит это событие мы выполняем ассинхронный запрос метода GetStates контроллера Home. Выбранное значение страны передается в метод как переменная: { countryID: $(this).val() }. Когда мы получаем ответ мы передаем полученные данные в функцию populateDropdown, которая очищает выпадающий список штатов и областей и заполняет его новыми значениями посреством добавления элемента option и установки его параметров value и text.

Код проекта можно скачать по ссылке ниже:

DynamicDropDown.zip (37.28 kb)

Перевод статьи Dynamic Select Lists with MVC and jQuery

24 января 2010

Windows 7 32 bit - 4GB of RAM

Всем давно известно, что 32-битная версия ОС не может адресовать 4GB памяти. Даже если их установить в систему будет видно всего-лишь около 3GB. Однако Windows Server 2008 32bit умеет видеть больше, а Windows 7 построена как раз на его ядре. Поддержка данной возможности отключена по лицензионным соображениям и есть метод ее включить.

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

Шаг 1
Загрузите файл: narod.ru, rapidshare.com

Шаг 2
Запустив его вы увидите данное окно:

В нем необходимо нажать на кнопку "Разблокировать"

Шаг 3
Через некоторое время появится сообщение об успешном завершении операции. После нажатия "ОК" отроется следующее окно:

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

Шаг 4
После загрузки системы откройте меню "Пуск", нажмите правой кнопкой на пункте "Компьютер" и выберите "Свойства".
Если все прошло успешно в появившемся окне вы увидите, что теперь используются все 4GB памяти.

В моем случае это выглядит так(256Mb забирает себе видеокарта).


Шаг 5(опциональный)
Чтобы уменьшить задержку автовыбора в меню загрузки ОС проделайте следующие действия: Откройте меню "Пуск", наберите "msconfig" и нажмите "Enter".
В открывшемся окне выберите вкладку "Загрузка" и установите значение поля "Таймаут" в 3 секунды(меньше, к сожалению нельзя).

Шаг 6(опциональный)
Если на рабочем столе в правом углу появилась надпись "Test Mode Windows 7 Build 7600" то выполните следующие действия:
Откройте меню "Пуск", введите "mcbuilder" и нажмите "Enter".
Дождитесь закрытия открывшегося окна и перезагрузите компьютер.

Информация взята с сайта pallab.net