2011-06-07 109 views
2

有谁知道如何将以下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中不需要这样做。已编译的程序集具有编译中的所有可用代码。

如果被包含的代码是实际的页面输出,那么它是一个不同的模型,你将如何实现这一点。最接近的比喻是conditionally display a user control。是这样的:

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中,用户控件被插入到现有的标记结构中。

1
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(整数)的。

夫妇的事情要注意。在部署之前进行ASP.NET预编译,这就是为什么您无法使用include动态添加的原因。相反,您必须将文件直接写入输出流(WriteFile())。此外,您包含的文件不能包含ASP.NET服务器端代码。如果这样做,代码将不会被执行,只会显示给用户。您可能会尝试实现的替代方案。你可以阅读更多的动态信息,包括文件here

0
<?php 

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && 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; 
} 

?> 
+0

这真的是个答案吗? – Nitesh 2012-10-20 10:10:32