有谁知道如何将以下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);
?>
答案 0 :(得分: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 :(得分: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。
答案 2 :(得分: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;
}
?>