gpt4 book ai didi

asp.net - Razor 代码去哪儿了?

转载 作者:太空宇宙 更新时间:2023-11-04 13:47:20 24 4
gpt4 key购买 nike

当我创建一个 Web 窗体项目时,我的代码被编译成一个 DLL,由 IIS 服务器处理。当我使用 Javascript 时,浏览器会解释它,我可以使用 Chrome 开发者工具或检查源代码找到它。

但是,当我使用 Razor 语法创建 ASP.NET 网页时,我无法在任何地方找到代码。因为它不需要编译,所以它没有放入 DLL 中,我无法使用 Chrome 的检查工具找到它的任何踪迹。

那么,Razor 代码去了哪里?

最佳答案

它们确实是在运行时编译的。您可以在放置已编译 Web 表单的同一位置找到生成的代码文件和临时 DLL:

C:\Windows\Microsoft.NET\Framework64\<version>\Temporary ASP.NET Files\<app>\

您还可以启用编译以及项目的其余部分来检测 View 中的错误。请参阅:Can Razor views be compiled? .这将增加解决方案的编译时间(根据我的经验),但它非常适合检测直到运行时才会被注意到的错误。我会在需要时打开它。

Razor 解析器/生成器代码包含在 System.Web.Razor 项目/程序集中(作为 MVC 源的一部分提供)。由于最终结果是一个 c# 类,因此 c# 编译器可能会像处理任何其他类一样从那里处理它。

为 View 生成的代码类似于(摘 self 的一个项目中的“重置密码”页面)。

namespace ASP {
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Helpers;
using System.Web.Security;
using System.Web.UI;
using System.Web.WebPages;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html;
using System.Web.Routing;

public class _Page_Areas_Anonymous_Views_Home_ResetPassword_cshtml : System.Web.Mvc.WebViewPage<Web.UI.Areas.Anonymous.ResetPasswordViewModel> {

#line hidden

public _Page_Areas_Anonymous_Views_Home_ResetPassword_cshtml() {
}

protected ASP.global_asax ApplicationInstance {
get {
return ((ASP.global_asax)(Context.ApplicationInstance));
}
}

public override void Execute() {

const string title = "Reset Password";
ViewBag.Title = title;


BeginContext("~/Areas/Anonymous/Views/Home/ResetPassword.cshtml", 302, 63, true);

WriteLiteral("</h1>\r\n </div>\r\n </div>\r\n </div>\r\n <div");

EndContext("~/Areas/Anonymous/Views/Home/ResetPassword.cshtml", 302, 63, true);

BeginContext("~/Areas/Anonymous/Views/Home/ResetPassword.cshtml", 365, 12, true);

WriteLiteral(" class=\"two\"");

EndContext("~/Areas/Anonymous/Views/Home/ResetPassword.cshtml", 365, 12, true);

BeginContext("~/Areas/Anonymous/Views/Home/ResetPassword.cshtml", 377, 15, true);

WriteLiteral(">\r\n <div");

EndContext("~/Areas/Anonymous/Views/Home/ResetPassword.cshtml", 377, 15, true);

BeginContext("~/Areas/Anonymous/Views/Home/ResetPassword.cshtml", 392, 19, true);

WriteLiteral(" class=\"banner-box\"");

EndContext("~/Areas/Anonymous/Views/Home/ResetPassword.cshtml", 392, 19, true);

BeginContext("~/Areas/Anonymous/Views/Home/ResetPassword.cshtml", 411, 5, true);

WriteLiteral(">\r\n\r\n");

#line default
#line hidden

using( @Html.BeginForm( "ResetPassword", "Home", FormMethod.Post, new { id = "main-form" } ) )
{

Write(Html.ValidationSummary());

// etc. etc. Even simple views result in a large code file

关于asp.net - Razor 代码去哪儿了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19062330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com