c# - 当我没有实例化 "Response.Redirect"时,如何从 Razor 网页使用 "Response"?

标签 c# asp.net asp.net-webpages razor-2

我对编程的有限了解需要,为了使用非静态方法,您需要首先创建类的实例。为了使用静态方法,您只需将类名与方法名一起使用。我正在为 asp.net 做网页教程,我遇到了以下让我感到困惑的代码:

@{
    var title = "";
    var genre = "";
    var year = "";

    if(IsPost){
        title = Request.Form["title"];
        genre = Request.Form["genre"];
        year = Request.Form["year"];

        var db = Database.Open("WebPagesMovies");
        var insertCommand = "INSERT INTO Movies (Title, Genre, Year) Values(@0, @1, @2)";
        db.Execute(insertCommand, title, genre, year);
        Response.Redirect("~/Movies");   
    }
}

我查找了 Response 类的 Redirect 方法,它没有列为静态方法,我认为这意味着它是一个实例方法。如果不首先创建 Response 类的实例,我如何才能使用它?

最佳答案

Razor 是 ASP.Net MVC 的 View 引擎插件。

它为您做了很多事情,例如为您的页面 View 动态生成代码。这意味着有一个基础 WebViewPage附加到您的每个页面的类,Razor 自动派生并与您在 @{ ... } 部分中的代码合并。

这使您可以访问几个有助于与浏览器通信的属性,例如 Response , IsPost , Request等。我选择这三个只是因为它们在您发布的代码中使用。

因此,例如,无需编写像 MyPage.Response.Write("test!"); 这样的代码,您可以简单地引用页面的 Response 属性直接上课。例如:Response.Write("test!");

Razor 足够聪明,知道 Response 是底层类的属性并使用它。


Response 属性是 HttpResponse 类型的对象。响应对象具有将数据(例如 html)写回客户端(浏览器)所需的一切。

Request 属性是 HttpRequest 类型的对象,它使您可以访问从客户端发送到服务器的信息。例如 Request.Form 是 html 输入控件数据(文本框、单选框、下拉列表...)的集合。

IsPost 是一个简单的 boolean,它告诉您页面是回发还是初始获取。

关于c# - 当我没有实例化 "Response.Redirect"时,如何从 Razor 网页使用 "Response"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15560671/

相关文章:

c# - 如何制作可插入的静态类

c# - C#中两个对象的区别

c# - CS 脚本 - 如何像标准 Windows 可执行文件一样运行 '.cs' 文件?

jquery - 使用asp.net网页和webmatrix + Jquery在上传之前预览图像

c# - 在 C# 中,如何计算字符串数组的每个索引中的单词数?

javascript - 如何在 ReactJS 中发布

asp.net - Javascript 计算和回传

c# - ASP.NET MVC 应用程序从 SQLite 数据库读取数据

asp.net-mvc - ASP.NET 网页和 Razor 之间有什么区别?

javascript - 从 C#(或 JS)将焦点设置为弹出窗口