Чак Норрис
- Вопросы
- Ответы
Имя | Неизвестно |
Возраст | Неизвестно |
Сайт | Неизвестно |
Неизвестно | |
Участвует в проекте | 1104 дн., 17 час., 4 мин. |
Последняя активность | 536 дн., 1 час., 55 мин. назад |
Ответы
Перейти к вопросу →
Эта ошибка возникает из-за того, что IIS был установлен на компьютер позже, чем .NET Framework и, соответственно, в IIS не настроены .NET-специфичные вещи. Обычно помогает выполнение команд (файл aspnet_regiis находится в папке с фреймворком конкретной версии):
aspnet_regiis /u
aspnet_regiis /i
Эти команды «реинтегрируют» ASP.NET в инфраструктуру IIS. Если это не помогло, то можно вручную назначить привелегии профилю ASP.NET на доступ к метабазе IIS:
aspnet_regiis -ga "Network Services"
И, наконец, самый хардкорный, но и самый универсальный способ — переустановить .NET Framework. По понятным причинам, делать это нужно только в самых крайних случаях :)
Перейти к вопросу →
К сожалению, в autocomplete нет настройки, отвечающей за тип запроса. Поэтому единственный выход — указать его прямо в файле jquery.autocomplete.js (или jquery.autocomplete.min.js). Нужно найти место, где вызывается метод:
$.ajax({mode:"abort" /* ... */});
и дописать type:
$.ajax({type: "POST",mode:"abort" /* ... */});
Перейти к вопросу →
Нужно просто хранить данные, необходимые для отображения не на форме, а в некотором специальном классе. И использовать экземпляр этого класса на обоих формах. Это первый шаг к любому человеческому архитектурному решению (MVC, MVP, MVVM и тд). Вообще, если интересно, как построить правильную архитектуру в WinForms, то у Фаулера есть цикл статей, посвященный этой теме (не конкретно WinForms, а desktop-приложений в целом). Вот переводы на русский:
- Martin Fowler — GUI Architectures. Часть 1
- Martin Fowler — GUI Architectures. Часть 2
- Martin Fowler — GUI Architectures. Часть 3
- Martin Fowler — GUI Architectures. Часть 4
- Martin Fowler — GUI Architectures. Часть 5
В самой первой части как раз рассматривается подход принятый в WinForms (Foms And Controls), когда все данные хранятся на самих формах. Затем рассматиривается семейство решений, основанных на паттерне MVC и преимущества, которые эти решения дают. (Кстати, в киниге GoF одно из названных преимуществ паттерна MVC — возможность подключить несколько видов к одному набору данных (модели)).
Перейти к вопросу →
Если есть привязка DataGridView к источнику данных, то нужно очистить источник данных. Например, удалить все строки из таблицы или все элементы из списка. Также можно попробовать установить источник данных в null
:
dataGridView.DataSource = null;
Если строки добавлялись в gridView вручную, то удалять их тоже нужно вручную, как-то так:
dataGridView.Rows.Clear();
Перейти к вопросу →
У меня сработал следующий код:
var msg = new StringBuilder(String.Empty);
var st = new Uri("http://www.deviantart.com");
var reqString = String.Format(
"reusetoken=1&username={0}&password={1}",
username, password);
var requestData = Encoding.UTF8.GetBytes(reqString);
var cc = new CookieContainer();
var request = (HttpWebRequest)
WebRequest.Create(
"https://www.deviantart.com/users/login"); 1
request.Credentials = CredentialCache.DefaultCredentials;
request.AllowAutoRedirect = false;
request.KeepAlive = true;
request.CookieContainer = cc;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";
request.ContentLength = requestData.Length;
using (var s = request.GetRequestStream())
{
s.Write(requestData, 0, requestData.Length);
}
var webResponse = request.GetResponse();
using (var stream = new StreamReader(webResponse.GetResponseStream()))
{
var content = stream.ReadToEnd();
Console.WriteLine(content);
foreach (var str in cc.GetCookies(st))
{
msg.Append(str);
}
Console.WriteLine(msg.ToString());
}
HttpWebRequest req = (HttpWebRequest) WebRequest.Create("http://www.deviantart.com/?loggedin=1");
req.CookieContainer = cc; 2
req.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse respons = (HttpWebResponse)req.GetResponse();
Stream dataStream = respons.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
Console.WriteLine(responseFromServer);
reader.Close();
dataStream.Close();
respons.Close();
Console.ReadLine();
Тут важно то, что при логине используется протокол https
вместо http
1. И при втором обращении к сайту нужно использовать CookieContainer
от первого обращения 2.
Перейти к вопросу →
Можно использовать последний участок кода для запроса любой страницы. Главное чтобы свойству CookiesContainer присваивался контейнер, содержащий куки авторизации. Можно сделать код более универсальным. У меня получилось вот что:
class Program
{
static void Main(string[] args)
{
var username = "username";
var password = "password";
var cookieContainer = GetAuthtorizationCookie(username, password);
var firstPage = GetPage(
"http://www.deviantart.com/?loggedin=1",
cookieContainer);
var secondPage = GetPage(
"http://my.deviantart.com/messages/",
cookieContainer);
Console.ReadLine();
}
private static CookieContainer GetAuthtorizationCookie(
string username, string password) 1
{
var reqString = String.Format(
"reusetoken=1&username={0}&password={1}",
username,
password);
var requestData = Encoding.UTF8.GetBytes(reqString);
var cookieContainer = new CookieContainer();
var request = (HttpWebRequest) WebRequest.Create(
"https://www.deviantart.com/users/login");
request.Credentials = CredentialCache.DefaultCredentials;
request.AllowAutoRedirect = false;
request.KeepAlive = true;
request.CookieContainer = cookieContainer;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0;" +
" Windows NT 5.1; SV1; .NET CLR 2.0.50727)";
request.ContentLength = requestData.Length;
using (var s = request.GetRequestStream())
{
s.Write(requestData, 0, requestData.Length);
}
using(var webResponse = request.GetResponse())
{
// Тут можно вставить проверку статуса ответа...
}
return cookieContainer;
}
private static string GetPage(
string uri, CookieContainer cookies) 2
{
var request = (HttpWebRequest) WebRequest.Create(uri);
request.CookieContainer = cookies;
request.Credentials = CredentialCache.DefaultCredentials;
using(var respons = (HttpWebResponse)request.GetResponse())
{
using (var reader = new StreamReader(respons.GetResponseStream()))
{
return reader.ReadToEnd();
}
}
}
}
Метод GetAuthtorizationCookie
1 логинется на сайт и возвращает соответствующие куки. Метод GetPage
2 принимает эти куки и возвращает заданную (любую) страницу сайта.
Перейти к вопросу →
Эта ошибка вызывается какой-то странностью в работе кеша ASP.NET. Соответственно, для исправления нужно просто очистить кеш — удалить временные файлы ASP.NET из папок:
Win XP:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\
Win XP 64:
C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\
Vista, Windows 7:
C:\Users\[USERNAME]\AppData\Local\Temp\Temporary ASP.NET Files\
Перейти к вопросу →
Такие динамические таблицы обычно создаются с помощью контрола GridView
. В MSDN есть хорошее описание и примеры (правда на английском).
Перейти к вопросу →
Нужно просто выполнить такой код:
window.location.hash="someId";
При этом изменится адрес текущей страницы в адресной строке браузера и произойдет навигация к элементу someId
Перейти к вопросу →
Компонент slider входит в состав jQuery UI: http://jqueryui.com/demos/slider/
Есть еще несколько реализаций для jQuery (без пакета UI):
- Слайдер в стиле Safari/MAC OS
- Дискретный слайдер. Альтернативный способ выбора значения (или интервала значений) из выпадающих списков.