Другим сценарием является то, что вы нанесли нулевой объект в тип значения . Например, код ниже:
object o = null;
DateTime d = (DateTime)o;
Он выкинет NullReferenceException
в роли. В приведенном выше примере это кажется совершенно очевидным, но это может произойти в более «поздних связующих» сложных сценариях, где нулевой объект был возвращен из некоторого кода, которого вы не являетесь, и приведение, например, генерируется некоторой автоматической системой.
Одним из примеров этого является этот простой фрагмент привязки ASP.NET с элементом управления календарем:
" />
Здесь SelectedDate
на самом деле является свойством - типа DateTime
- типа Calendar
Web Control, и привязка может отлично вернуть что-то null. Неявный генератор ASP.NET создаст кусок кода, который будет эквивалентен приведенному выше методу. И это поднимет NullReferenceException
, что довольно сложно определить, потому что он лежит в сгенерированном ASP.NET коде, который компилирует отлично ...
asp-страницы - это простые простые страницы, на которых фактически работают автономные скрипты на стороне сервера, а сервер возвращает результат. Каждая страница одна.
Страницы asp.net - это полная программа, которые связаны друг с другом, потому что они работают под одним пулом, скомпилируют их все вместе в одном каталоге со многими подкаталогами, имеют специальные каталоги и другие опции. Пул, в котором работают страницы, обрабатывает некоторые общие данные, состояния сеанса и многие другие.
Таким образом, у вас может быть полная настройка asp.net для вашего сайта, которая сначала запустит ее, а затем вы вероятно, можно использовать некоторую страницу asp для выполнения дополнительной работы до тех пор, пока вы не перенесите их все в asp.net
. Таким образом, у обоих нет никакого родственника, поэтому в простом ответе вы не можете вставлять что-либо от одного к другие.
<% IF Len(SomeString) < 3 then %>
Ok something here
<% end if %>
В этом случае код прост на обеих страницах, но они не встроены asp в asp.net, завершают отображение одной страницы за один из них.
Директива #include действительна для обоих, но на asp.net не собирается компилировать включенный файл как на asp.
У них есть общий способ ввода кода, но они совершенно разные, и вам нужно начать разбавлять разные, когда вы переходите от asp к asp.net
Как правило, ответ на ваш вопрос - нет.
Однако в некоторых случаях может быть возможно отобразить часть страницы ASP.net, а затем поместить результат на страницу ASP.
Я экспериментировал с этим немного на прошлой неделе с использованием AJAX.
Вот что вы можете сделать.
Предположим, что у вас есть страница ASP.net с формы в нем, которую вы хотите отобразить на странице ASP.
1) Создайте страницу ASP.net с формой и оберните ее в ASP: Panel - дайте ей идентификатор: pnlForm
2 ) В коде ASP.net введите следующий код в Page_Load
: pnlForm.RenderControl()
.
System.IO.StringWriter stringWriter = new System.IO.StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
pnlReport.RenderControl(htmlWriter);
Response.Write(stringWriter.ToString());
3) Добавьте следующий фрагмент кода в конец кода:
// This snippet is neccessary to get ASP.net to render the report outsisde the page to write to an Excel spreadsheet.
public override void VerifyRenderingInServerForm(Control control)
{
return;
}
4) Создайте пустую div
на вашей классической странице ASP - дайте ей ID formDiv
.
5) На классической странице ASP используйте jQuery.ajax для извлечения формы и поместите его на классическую страницу ASP:
$.ajax({
type: "GET",
url: "myASPdotNetpage.aspx",
success: function(response) { $('#formDiv').html(response); }
});
Как вы можете себе представить, это не совсем то, как предполагается использовать фреймворк, но если вам действительно нужно отобразить некоторые ASP.net и поставить это немного e else (например, на странице ASP или даже в электронной таблице), вы можете по крайней мере захватить HTML.
Вы не можете. Основная проблема заключается в том, что ASP и ASP.NET работают в разных процессах. У вас может быть отдельная ASP-страница в приложении ASP.NET, но вы не сможете поделиться каким-либо кодом между ними. В сущности, у вас было бы два приложения, работающие в одном каталоге. Невозможно передать данные, хранящиеся в одном процессе (например, данные сеанса).