C# 从standalone.aspx页面调用服务器端类

C# 从standalone.aspx页面调用服务器端类,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个生成独立aspx页面的应用程序,这些页面在c#中有自己的脚本 现在我不想将所有的c#脚本代码添加到c#script标记中,所以我想调用一个后端c#类,它将包含所有脚本代码(这是正常的c#代码)。 我想从这个脚本中调用后端c#类,即 <script language="CS" runat="server"> MyClass myclass = new MyClass();// backend class myclass.GetAllScripts(); //say this

我有一个生成独立aspx页面的应用程序,这些页面在c#中有自己的
脚本

现在我不想将所有的c#脚本代码添加到c#
script
标记中,所以我想调用一个后端c#类,它将包含所有脚本代码(这是正常的c#代码)。 我想从这个脚本中调用后端c#类,即

<script language="CS" runat="server"> 
MyClass myclass = new MyClass();// backend class
myclass.GetAllScripts(); //say this is the fucntion which contains scripting 
code
</script>

MyClass MyClass=新建MyClass();//后端类
myclass.GetAllScripts()//假设这是包含脚本的功能
代码

您可以将生成的代码保存在
App\u code
文件夹中,此文件夹中的代码将在运行时编译,并为应用程序的其他部分做好准备

例如:

var generatedCode=
@"
名称空间MyProject
{
公共类MyClass
{
public void GetAllScripts()
{
// ...
}
}
}
";
var generatedPage=
@"
试验
无效页面加载(对象发送方,事件参数e)
{
//打开页面时将执行以下代码
MyClass MyClass=新建MyClass();//后端类
myclass.GetAllScripts();
}
...
";
//更改路径和文件名以满足您的需要,但cs文件必须位于~/App\u代码中
var aspxPath=Path.Combine(Server.MapPath(“~”,“GeneratedPage.aspx”);
System.IO.File.WriteAllText(aspxPath,generatedPage);
var csPath=Path.Combine(Server.MapPath(“~/App_Code”),“MyClass.cs”);
System.IO.File.writealText(csPath,generatedCode);

这是
MVC
项目还是
webforms
项目?这是
MVC
项目为什么在MVC项目中有.aspx页面?这没有道理吗?请详细说明您的问题并创建。有了这一点信息,你不可能得到帮助。@Esko我已经编辑了这个问题,请看一看。仍然非常不清楚和不完整。C#仅在服务器上运行,因此将其称为“脚本”只会造成混淆。那么期望的结果是什么?我必须在我的aspx页面中将此代码示例放置在何处?在生成独立aspx页面的位置,我需要在我的
中调用此
,这仅适用于网站应用程序,我认为这些应用程序根本不应该再使用。您应该始终使用web应用程序,不管它是Asp.NETWeb表单还是Asp.NETMVC。在web应用程序项目中,所有文件夹都将生成,因此应用程序代码文件夹是无关的。
var generatedCode = 
@"
    namespace MyProject
    {
        public class MyClass
        {
            public void GetAllScripts()
            {
                // ...
            }
        }
    }
";
var generatedPage = 
@"
    <%@ Page Language=""C#"" AutoEventWireup=""true"" %>
    <html>
    <head>
        <title>Test</title>
        <script language=""CS"" runat=""server"" >
            void Page_Load(object sender, EventArgs e)
            {
                //below code will be executed when the page is opened
                MyClass myclass = new MyClass();// backend class
                myclass.GetAllScripts();
            }
        </script>
    </head>
    <body>
        ...
    </body>
    </html>
";

// change to the path and file name to fit your need, but the cs file must in ~/App_Code
var aspxPath = Path.Combine(Server.MapPath("~"), "GeneratedPage.aspx");
System.IO.File.WriteAllText(aspxPath, generatedPage);

var csPath = Path.Combine(Server.MapPath("~/App_Code"), "MyClass.cs");
System.IO.File.WriteAllText(csPath, generatedCode);