PHP в ASP.NET преобразование

#php #asp.net

#php #asp.net

Вопрос:

Кто-нибудь знает, как преобразовать следующий PHP-код в ASP.NET ?

 <?php
$myFile = "includes/status.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, 1);

$status= $theData;

if ( $status == 0) {
    include('includes/bol_down.php');
} 
    elseif ($status == 1){
    include('includes/login_form_up.php');
}

fclose($fh);
?>
  

Ответ №1:

Вероятно, многое зависит от того, что включается. ASP.NET не «включает» другой код таким образом.

Если включаемый код — это просто PHP-код, то в этом нет необходимости ASP.NET . В скомпилированной сборке уже доступен весь доступный код из компиляции.

Если включаемый код является фактическим выводом страницы, то это другая модель того, как вы могли бы этого добиться. Ближайшей аналогией было бы условное отображение пользовательского элемента управления. Что-то вроде этого:

 if (status == 0)
{
  var myControl = (MyControlType)LoadControl("~/MyControl.ascx");
  myPlaceHolder.Controls.Add(myControl);
}
else if (status == 1)
{
  var myOtherControl = (MyOtherControlType)LoadControl("~/MyOtherControl.ascx");
  myPlaceHolder.Controls.Add(myOtherControl);
}
  

В данном случае myPlaceHolder — это существующий элемент управления на странице, который существует исключительно как, ну, заполнитель для того, чтобы добавлять элементы управления динамически. Это потому, что жизненный цикл страницы отличается в ASP.NET чем в PHP. В PHP скрипты добавляются в строке, тогда как в ASP.NET пользовательские элементы управления вставлены в существующую структуру разметки.

Ответ №2:

 int status = theData;

if(status == 0)
{
  Response.WriteFile("includes/bol_down.html");  
}
else if(status == 1)
{
  Response.WriteFile("includes/login_form_up.html");
}
  

Я предполагаю, что theData имеет тип int (integer).

Пара вещей, на которые следует обратить внимание. ASP.NET предварительно компилируется перед развертыванием, поэтому вы не можете динамически добавлять с помощью include . Вместо этого вы должны записать файл непосредственно в выходной поток ( WriteFile() ). Кроме того, файл, который вы включаете, не может содержать ASP.NET код на стороне сервера. Если это произойдет, код не будет выполнен, он просто будет показан пользователю. Возможно, есть альтернатива тому, чего вы пытаетесь достичь. Вы можете прочитать больше о динамическом включении файла здесь.

Ответ №3:

 <?php

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) amp;amp; strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){ 

    include_once "ez_sql_core.php";
    include_once "ez_sql_mysql.php";
    $db = new ezSQL_mysql('db_user','db_password','db_name','db_host'); 

    $song = $db->get_row("SELECT * FROM songs ORDER BY RAND() LIMIT 1");

    $artist = $song->artist;
    $songname = $song->title;
    $url = $song->url;
    $separator = '|';
    echo $url.$separator.$artist.$separator.$songname;
} 

?>