Доступ к объекту приложения, созданному из ASP в ASP.net [дубликат]

Другим сценарием является то, что вы нанесли нулевой объект в тип значения . Например, код ниже:

object o = null;
DateTime d = (DateTime)o;

Он выкинет NullReferenceException в роли. В приведенном выше примере это кажется совершенно очевидным, но это может произойти в более «поздних связующих» сложных сценариях, где нулевой объект был возвращен из некоторого кода, которого вы не являетесь, и приведение, например, генерируется некоторой автоматической системой.

Одним из примеров этого является этот простой фрагмент привязки ASP.NET с элементом управления календарем:

" />

Здесь SelectedDate на самом деле является свойством - типа DateTime - типа Calendar Web Control, и привязка может отлично вернуть что-то null. Неявный генератор ASP.NET создаст кусок кода, который будет эквивалентен приведенному выше методу. И это поднимет NullReferenceException, что довольно сложно определить, потому что он лежит в сгенерированном ASP.NET коде, который компилирует отлично ...

7
задан Joel Coehoorn 18 November 2011 в 05:56
поделиться

3 ответа

Нет, вы не можете *

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

Страницы asp.net - это полная программа, которые связаны друг с другом, потому что они работают под одним пулом, скомпилируют их все вместе в одном каталоге со многими подкаталогами, имеют специальные каталоги и другие опции. Пул, в котором работают страницы, обрабатывает некоторые общие данные, состояния сеанса и многие другие.

Таким образом, у вас может быть полная настройка asp.net для вашего сайта, которая сначала запустит ее, а затем вы вероятно, можно использовать некоторую страницу asp для выполнения дополнительной работы до тех пор, пока вы не перенесите их все в asp.net

. Таким образом, у обоих нет никакого родственника, поэтому в простом ответе вы не можете вставлять что-либо от одного к другие.

Способы обмена данными между asp и asp.net

  • Вы можете использовать тэки iframe для загрузки одной страницы в другую, но они все еще разные, и я делаю не нравится идея.
  • Вы используете некоторые трюки ajax для получения и отправки данных. Не так классная идея.
  • Вы можете использовать также общую базу данных для обмена данными.
  • Вы можете использовать одни и те же файлы cookie для обмена данными.
  • Вы не можете иметь одни и те же данные сеанса (за исключением специальной библиотеки для сеанса, такого как groat.com).
  • Вы можете обмениваться файлами.

* За исключением того, что код такой же простой, как

<% IF Len(SomeString) < 3 then %>
Ok something here
<% end if %>

В этом случае код прост на обеих страницах, но они не встроены asp в asp.net, завершают отображение одной страницы за один из них.

Директива #include действительна для обоих, но на asp.net не собирается компилировать включенный файл как на asp.

У них есть общий способ ввода кода, но они совершенно разные, и вам нужно начать разбавлять разные, когда вы переходите от asp к asp.net

7
ответ дан Aristos 24 August 2018 в 06:49
поделиться

Как правило, ответ на ваш вопрос - нет.

Однако в некоторых случаях может быть возможно отобразить часть страницы 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.

2
ответ дан Daniel Allen Langdon 24 August 2018 в 06:49
поделиться

Вы не можете. Основная проблема заключается в том, что ASP и ASP.NET работают в разных процессах. У вас может быть отдельная ASP-страница в приложении ASP.NET, но вы не сможете поделиться каким-либо кодом между ними. В сущности, у вас было бы два приложения, работающие в одном каталоге. Невозможно передать данные, хранящиеся в одном процессе (например, данные сеанса).

-1
ответ дан ek_ny 24 August 2018 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: