Любой ценой поместите это в codeplex проект.
Сериализация / Десериализовывающие объекты к XML:
/// <summary>Serializes an object of type T in to an xml string</summary>
/// <typeparam name="T">Any class type</typeparam>
/// <param name="obj">Object to serialize</param>
/// <returns>A string that represents Xml, empty otherwise</returns>
public static string XmlSerialize<T>(this T obj) where T : class, new()
{
if (obj == null) throw new ArgumentNullException("obj");
var serializer = new XmlSerializer(typeof(T));
using (var writer = new StringWriter())
{
serializer.Serialize(writer, obj);
return writer.ToString();
}
}
/// <summary>Deserializes an xml string in to an object of Type T</summary>
/// <typeparam name="T">Any class type</typeparam>
/// <param name="xml">Xml as string to deserialize from</param>
/// <returns>A new object of type T is successful, null if failed</returns>
public static T XmlDeserialize<T>(this string xml) where T : class, new()
{
if (xml == null) throw new ArgumentNullException("xml");
var serializer = new XmlSerializer(typeof(T));
using (var reader = new StringReader(xml))
{
try { return (T)serializer.Deserialize(reader); }
catch { return null; } // Could not be deserialized to this type.
}
}
Вы можете добавить временный элемент в раскрывающийся список во время работы ajax:
$('#myDropDown').prepend($('<option></option>').html('Loading...'));
Если там ничего нет для начала, просто сделайте это HTML по умолчанию, и вы удалите половину своего jQuery.
<select>
<option>Loading...</option>
</select>
И когда ваш запрос завершится, просто замените единственный вариант
с вашими результатами.
Назовем ваше раскрывающееся меню «userChoice», вы можете написать такой код, как
$(document).ready(
function()
{
//Before calling your ajax method, clear the select drop down.
//and add a loading option.
$('#userChoice')
.children()
.remove()
.end()
.append('<option value="">Loading...</option>');
$.ajax(
//Load the userChoice as usual in success handler of your ajax call.
success : function() { //Load #userChoice }
);
}
);
Если вы выполняете запрос через вызов AJAX, вы можете использовать что-то вроде следующего, чтобы сначала очистить раскрывающийся список и вставить сообщение о загрузке (в Javascript на стороне клиента):
var lb = document.getElementById ("myDropdownList");
lb.options.length = 0;
var newOpt = new Option("Loading...", "");
lb.options[0] = newOpt;
// Your jquery call here
...