Измените файл Default.aspx по умолчанию на Index.aspx в Visual Studio 2010.

Всякий раз, когда я создаю новую веб-форму в Visual Studio 2010, имя по умолчанию всегда "Default.aspx". Это небольшая проблема, так как мне приходится каждый раз менять его на «Index.aspx».

Как я могу изменить это, чтобы «Index.aspx» было именем по умолчанию?

Спасибо.


person Curt    schedule 03.08.2010    source источник
comment
Вы имели в виду проект вместо формы? Он запрашивает название новых форм.   -  person Matti Virkkunen    schedule 03.08.2010
comment
Он запрашивает имя, но имя предварительно заполнено «Default.aspx», тогда как я хочу, чтобы это было «Index.aspx». Извините, если я не ясно дал понять это в своем первоначальном вопросе.   -  person Curt    schedule 03.08.2010


Ответы (3)


Это можно сделать, изменив связанный элемент .vstemplate DefaultName. Например, вы можете найти шаблон веб-формы, который необходимо изменить, в каталоге, похожем на следующий: C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\1033. Каждый файл шаблона управляется в zip-файле, таком как WebForm.zip. Разархивируйте содержимое, измените элемент .vstemplate DefaultName и повторно примените изменения к той же папке шаблонов. Ваши обновления должны отражаться в Visual Studio. (Возможно, вам придется перезапустить VS.)

В качестве альтернативы вам следует подумать о создании собственного шаблона (на основе оригинала) вместо изменения шаблона по умолчанию.

person Ben Griswold    schedule 06.08.2010

Нет, это невозможно сделать в Visual Studio. Вы можете сделать это только в IIS.

Но вы можете определить начальную страницу на страницах свойств (веб) веб-приложения ASP.NET.

person Albert Weinert    schedule 06.08.2010

Хотя это не охватывает все сценарии, я использовал следующий код в Gloabal.asax.cs для достижения этой цели:

public class Global : System.Web.HttpApplication
{
    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        if (Request.Url.AbsolutePath.EndsWith("/"))
        {
            Server.Transfer(Request.Url.AbsolutePath + "index.aspx");
        }
    }
}

*Вы должны не забыть удалить этот код при его развертывании (или обернуть операторами DEBUG)!

person Jonathan Williams    schedule 04.08.2011
comment
Спасибо, Джонатан. Почему я должен не забыть удалить его перед развертыванием? Я не могу полагаться на свою память, поэтому я, вероятно, оберну ее в оператор IF (SiteIsLive) или что-то в этом роде. - person Curt; 05.08.2011
comment
Я подозреваю, что было бы гораздо эффективнее позволить IIS обрабатывать страницы по умолчанию (например, index.aspx), чем использовать этот код при каждом запросе. В качестве альтернативы (и, вероятно, рекомендуется, если вы страдаете забывчивостью);) вы можете обернуть этот код в #if (DEBUG), что означает, что он будет выполняться только при запуске кода в режиме отладки. Вы можете найти более подробную информацию о MSDN здесь - person Jonathan Williams; 07.08.2011
comment
Примечание по этому подходу заключается в том, что HttpContext.Current.Session еще не инициализирован после вызова передачи. Однако передача (по умолчанию, но может быть удалена) передает все переменные. - person Crypth; 05.10.2011