Ответы пользователя Sergey - CodeHelper

Sergey

Sergey
Карма 2841
Имя Sergey
Возраст Неизвестно
Сайт Неизвестно
Twitter Неизвестно
Участвует в проекте 1109 дн., 12 час., 52 мин.
Последняя активность 512 дн., 11 час., 12 мин. назад
О себе ничего не указано

Ответы

Новые Лучшие
1
2
3
4
5
6
...
14
Перейти к вопросу →

Можно встроить тег <meta name="robots" content="..."> внутрь раздера head страницы. Такой способ удобно применять, когда механизм отказа в индексации должен работать динамично. Возможные значения атрибута content:

NOINDEX - запрещает индексирование документа;

NOFOLLOW - запрещает проход по ссылкам, имеющимся в документе;

INDEX - разрешает индексирование документа;

FOLLOW - разрешает проход по ссылкам, имеющимся в документе.

ALL – разрешает как индексирование документа, так и проход по ссылкам (равносильно INDEX, FOLLOW)

NONE – запрещает индексирование и проход по ссылкам (равносильно NOINDEX, NOFOLLOW)

Если META name="ROBOTS" в документе не указан и в файле robots.txt не запрещена его индексация, файл индексируется, и проход по ссылкам происходит, что равносильно

<META name="ROBOTS" content="index, follow">

или

<META name="ROBOTS" content="all">

Если нужно другое поведение, следует включить META name="ROBOTS" между тегами <head> и </head> страницы, указав, какая обработка ему нужна. Например:

<META name="ROBOTS" content="index, nofollow">

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

Строка

<META name="ROBOTS" content="none">

очень близка по смыслу запрету индексации в файле robots.txt.

Недостаток такого подхода по сравнению с robots.txt состоит в следующем. Если поисковая система видит, что адрес запрещен файлом robots.txt, то она не станет скачивать и включать в индекс соответствующую страницу. А чтобы увидеть тег meta, поисковику приходится предварительно скачать код страницы. Эта лишняя нагрузка на поисковик неизбежна если решение о запрете индексации производится динамически; в остальных случаях предпочтительнее использовать robots.txt а не meta robots.

При обнаружении в теге противоречивых инструкций (включенных по ошибке, принимаются разрешающие). Например:

<META name="ROBOTS" content="index, nofollow, follow">

Равносильно

<META name="ROBOTS" content="index, follow">

Источник

Перейти к вопросу →

Есть способ, правда это танец с бубном

Можно сделать ascx embedded, то есть включить его в сборку и серез рефлектор вытаскивать его, в статье ASP.NET: Reusing Web User Controls and Forms описано:

protected void Page_Load(object sender, EventArgs e)
{
    Control ctrl = LoadControl("/App_Resource/WebApplicationControls.dll/"+
      "WebApplicationControls.WebUserControl1.ascx");
    PlaceHolder1.Controls.Add(ctrl);
}

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

Перейти к вопросу →

Делает запрос на сайт, получает куки. Делает на тот же сайт запрос (второй раз) с полученными ранее куками и получает новые куки.

HttpWebRequest h1 = (HttpWebRequest) WebRequest.Create("http://site.ru");
h1.AllowAutoRedirect = false;
CookieContainer cc = new CookieContainer();
h1.CookieContainer = cc;
HttpWebResponse r1 = (HttpWebResponse)h1.GetResponse();
foreach (Cookie c in r1.Cookies)
{
    textBox1.Text += "\r\n cook1:" + c;
    cc.Add(c);
}
HttpWebRequest h2 = (HttpWebRequest)WebRequest.Create("http://site.ru");
h2.AllowAutoRedirect = false;
h2.CookieContainer = cc;
HttpWebResponse r2 = (HttpWebResponse)h2.GetResponse();
foreach (Cookie c in r2.Cookies)
    textBox1.Text += "\r\n cook2:" + c;

Естественно создавать второй request не обязательно

CookieContainer cookies = new CookieContainer();
HttpWebRequest postRequest = (HttpWebRequest)WebRequest.Create(site);
postRequest.CookieContainer = cookies; // note this
postRequest.Method = "POST";
postRequest.ContentType = "application/x-www-form-urlencoded";
using (Stream stream = postRequest.GetRequestStream())
{
    stream.Write(buffer, 0, buffer.Length);
}
Перейти к вопросу →

Вот ряд изменений, которые есть в ASP.NET MVC 2 RC :

  • скрипты валидации перемещны в отдельный файл;
  • скрипты валидации теперь можно включать как сначала разметки, так и внизу для клиентской оптимизации;
  • скрипты валидации поддерживают глобализацию;
  • метод Html.ValidationSummary может теперь отображать не сразу все ошибки валидации, а только те, которые вычисляются в модели, чтобы остальные показывались рядом с элементами управления и не дублировались;
  • шаблоны T4 в Visual Studio теперь генерируют код специфичный для версии .NET Framework
  • разметка генерируемая через Add View теперь содержит использование Editor, EditorFor, Display и DisplayFor;
  • теперь можно декларативно задать поведение кнопки и ее влияние на валидацию формы, вызывает валидацию или нет;
  • теперь можно декларативно управлять тем, когда вызывается валидация: во время ввода, после смены фокуса, перед отправкой формы;
  • был исключен метод Html.Substitute;
  • инсталятор теперь не производит маппинг скриптов для IIS6 и IIS7 в режиме Integrated Mode, при нужде инструменты для самостоятельного маппинга лежат на codeplex.com.

Cписок ключевых фич, которые войдут в ASP.NET MVC 2. Среди них: Areas, ассинхронные Controller Actions, улучшенная поддержка Dynamic Data, улучшения в кешировании, валидации и другое.

Перейти к вопросу →

Использовал для этого JavaScript. За основу взял статью "Мой авторесайз IFRAME"

"Смысл в том, что ифрэйм внутри ифрэйма имеет доступ к главному окну, если он располагается на том же домене.

Открываю я два ифрэйма, потому как решение с document.domain имеет свои недостатки, которые на моем сайте довольно тяжело устранить.

При этом решении не портится история браузера, т.к. рабочие ифрэймы каждый раз заново создаются."

Перейти к вопросу →

Тег <button> определяет кнопку.

Внутри элемента кнопки вы можете разместить контент, текст или изображение. Вот в чем разница между этим элементом и кнопкой, созданной с помощью элемента input. Всегда указывайте тип атрибута для кнопки. Тип по умолчанию для Internet Explorer является "button", а в других браузерах (и в спецификации W3C) это "submit".

Тег <button> поддерживается всеми современными браузерами.

Разница применения в HTML и XHTML - никакой

Важно: Если вы пользуетесь элемент кнопка в HTML форме, разные браузеры будут представлять различные значения. Internet Explorer будет представлять текст между тегами <button> и </button>, а другие браузеры будут представить содержание значения атрибута value. Поэтому В HTML форме предпочтительнее использовать элемент input.

Кнопки <button> предлагают богатые возможности рендеринга: элемент <button> может быть содержание, например, различные картинки, без использования специфических классов, поэтому иногда все-теки разумнее использовать его.

Перейти к вопросу →

Нужно добавить в reference WUApiLib "C:\windows\system32\Wuapi.dll"

WUApiLib.AutomaticUpdatesClass auc = new WUApiLib.AutomaticUpdatesClass();
bool active = auc.ServiceEnabled;

MSDN:

Свойство ServiceEnabled показывает, доступны ли все компоненты, требуемые для автоматического обновления (Automatic Updates).

Перейти к вопросу →

Вот пример на C: Пример: Проверка правильности расстановки скобок v1 Файл Main.cpp

#include "stdafx.h"

namespace mystack {

int stack_head = 0;
const int stack_max_length = 128;
char stack_holder[stack_max_length];

void error(char *message) {
    printf("Error: %s", message);
    abort();
}

void push(char ch) {
    if (stack_head < stack_max_length)
    	stack_holder[stack_head++] = ch;
    else
    	error("Stack holder is full");
}


char pop() {
    if (stack_head > 0)
    	return stack_holder[--stack_head];
    else
    	error("Stack is empty");
    assert(false);
    return 0;
}

bool is_empty() {
    return stack_head == 0;
}

}   // namespace mystack

// --------------------------------------------------------------------------------------

namespace string_analizer {

    void error(const char *message) {
    	printf("Analizer error: %s", message);
    	abort();
    }

    bool is_open_bracket(char ch) {
    	return ch == '(' || ch == '{' || ch == '[';
    }

    char get_pair(char bracket) {
    	switch(bracket) {
    		case '(' : return ')';
    		case '{' : return '}';
    		case '[' : return ']';
    		default  : error("Unknown bracket");
    	}
    	assert(false);
    	return 0;
    }

    bool is_close_bracket(char ch) {
    	return ch == get_pair('(') || ch == get_pair('{') || ch == get_pair('[');
    }

    void analize(const char *str) {
    	for(int i=0; str[i]!=0; i++) {
    		if (is_open_bracket(str[i]))
    			mystack::push(str[i]);
    		if (is_close_bracket(str[i])) {
    			if (mystack::is_empty()) 
    				error("Invalid balance (close bracket without open bracket)");
    			char ch = mystack::pop();
    			if (get_pair(ch) != str[i]) error("Invalid pair");
    		}
    	}
    	if (!mystack::is_empty()) 
    		error("Invalid balance (open bracket without close bracket)");
    }

}   // namespace string_analizer

// --------------------------------------------------------------------------------------

namespace sa = string_analizer;

int main(int argc, char* argv[])
{
    char buf[128];
    printf("Enter expression to analize: ");
    scanf("%s", buf);
    sa::analize(buf);
    return 0;
}
Перейти к вопросу →

Чаще всего удаляються все html теги и отрезается текст по нужной длине, но при этом не по середине слова

public string GetPlainText(string html)
{
    var rexTag = new Regex("<[^>]*>");
    var review = rexTag.Replace(html, " ").Trim();
    var rexSpace = new Regex(@"\s+");

    return rexSpace.Replace(review, " ").Trim();
}

public string GetPlainText(string html, int size)
{
    if (size < 1)
    {
    	throw new ArgumentOutOfRangeException("size", "Parameter cannot be negative or zero");
    }

    var review = GetPlainText(html);

    int i = review.Length;
    if (size < i)
    {
    	i = review.LastIndexOf(" ", size);
    	if (i < 0)
    	{
    		i = 0;
    	}
    }

    return review.Substring(0, i);
}
Перейти к вопросу →

Можно использовать временную папку для asp.net

string filePath = System.IO.Path.GetTempPath() + @"\File.txt";

GetTempPath() вернёт "C:\Documents and Settings\userName\ASPNET\Local Settings\Temp". Эта папка, в которой ASP.NET имеет права на чтение и запись.

Для доступа к системной папке temp придётся делать олицетворение, подробнее можно прочитать в MSDN


1
2
3
4
5
6
...
14
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.