Используйте метод .serialize()
для отправки данных всей формы в jQuery Ajax.
data:$('#formID').serialize()
Пример скрипта можно найти здесь - Как отправить данные всей формы в jQuery Ajax
В последней версии директивы using применяются только внутри объявления пространства имен.
В большинстве случаев у вас будет только одно объявление пространства имен:
// Using directives
...
namespace X
{
// Maybe more using directives
// Code
}
// End of file
Основное различие в том, если у вас есть несколько пространств имен в одном файле:
// Using directives
...
namespace X
{
// Maybe more using directives
// Code
}
namespace Y
{
// Maybe more using directives
// Code
}
// End of file
В этом случае директивы using в объявлении пространства имен X не влияют на код внутри объявления пространства имен Y, и наоборот.
Однако это не единственное различие - существует тонкий случай, на который указывает Эрик Липперт , где он может повлиять на код даже с помощью всего лишь одного объявления пространства имен. (Обычно, если вы пишете , используя Foo;
внутри объявления пространства имен X, и есть пространство имен X.Foo
, а также Foo
, поведение меняется. Это может можно исправить с помощью псевдонима пространства имен, например. грамм. using global :: Foo;
, если вы действительно хотите.)
Лично я бы придерживался:
Это делает директивы using локальными для этого пространства имен, что на практике не должно иметь никакого значения, поскольку вы (надеюсь) не объявляете несколько типов в нескольких пространствах имен в одном исходном файле.
Подробности здесь .
Второе может быть неоднозначным;
Верхний проясняет ваше после этих пространств имен:
В то время как второй будет сначала искать эти пространства имен:
И обратитесь к ним вместо этого, если они найдены ... Если нет, они оба будут ссылаться в те же пространства имен.
Более безопасная перезапись второго будет:
namespace AProject.Helpers
{
using global::System;
using global::System.Collections;
using global::System.Collections.Generic;
}
Думаю, есть причина использовать вторую альтернативу с точки зрения пуристов, поскольку она дает более ясное представление о масштабах использование директив
:
В первом примере объявления using являются "глобальными" для всего файла. Во втором примере операторы using будут применяться только к коду, заключенному в блок пространства имен.
Я думаю, что это действительно имеет значение только в том случае, если у вас более одного пространства имен в файле и вы хотите ограничить какое пространство имен имеет доступ к каждому объявлению использования.
А для процесса, на который указывает Арьян, считается плохой практикой объявлять об использовании внутри вашего пространства имен. Их можно неявно переопределить другим пространством имен.
Другое важное различие между ними возникает при использовании LINQ-to-SQL и сгенерированных классов контекста данных. Например, образец базы данных Northwind; изначально вы получите:
Northwind.dbml
Northwind.dbml.layout
Northwind.designer.cs
Если теперь вы хотите расширить частичные классы, добавив свой собственный Northwind.cs
, вы получите
Northwind.dbml
Northwind.dbml.layout
Northwind.designer.cs
Northwind.cs
Забавно , в генераторе кода есть ошибка ( MSLinqToSQLGenerator
) - это означает, что если директивы using
находятся вне пространства имен (как они есть по умолчанию), он прерывается - с сообщением:
Произошла ошибка пользовательского инструмента MSLinqToSQLGenerator. Неизвестная ошибка
И файл Northwind.designer.cs
удаляется. Нет больше контекста данных!
Однако, если вы переместите с помощью
директив внутрь пространства имен (и повторно запустите настраиваемый инструмент - щелкните правой кнопкой мыши в проводнике решений), он работает правильно.
Итак: это не деталь языка - это просто ошибка в генераторе кода; но есть довольно большая разница между «работает правильно» и сгенерированным кодом, который удаляется ...
Обратите внимание, что вы также можете исправить это, просто назвав свой файл другим способом - например, NorthwindExtras.cs
.
Чумовая.
если вы переместите с помощью
директив внутрь пространства имен (и повторно запустите настраиваемый инструмент - щелкните правой кнопкой мыши в проводнике решений), он будет работать правильно.
Итак: это не деталь языка - это просто ошибка в генераторе кода; но есть довольно большая разница между «работает правильно» и сгенерированным кодом, который удаляется ...
Обратите внимание, что вы также можете исправить это, просто назвав свой файл другим способом - например, NorthwindExtras.cs
.
Чумовая.
если вы переместите с помощью
директив внутрь пространства имен (и повторно запустите настраиваемый инструмент - щелкните правой кнопкой мыши в проводнике решений), он будет работать правильно.
Итак: это не деталь языка - это просто ошибка в генераторе кода; но есть довольно большая разница между «работает правильно» и сгенерированным кодом, который удаляется ...
Обратите внимание, что вы также можете исправить это, просто назвав свой файл другим способом - например, NorthwindExtras.cs
.
Чумовая.