gpt4 book ai didi

.net - 如何获取 'codebehind' 文件,以便默认创建 RC1 中的 ASP.NET-MVC View

转载 作者:行者123 更新时间:2023-12-04 18:54:53 24 4
gpt4 key购买 nike

在 RC1 中,用于创建 View 的模板的行为发生了变化。

正如 Scott Gu 关于 release candidate 的帖子所解释的那样默认情况下,新创建的 aspx View 不再具有代码隐藏文件。

Based on feedback we’ve changed view-templates to not have a code-behind file by default. This change helps reinforce the purpose of views in a MVC application (which are intended to be purely about rendering and to not contain any non-rendering related code), and for most people eliminates unused files in the project.

The RC build now adds C# and VB syntax support for inheriting view templates from base classes that use generics. For example, below we are using this with the Edit.aspx view template – whose “inherits” attribute derives from the ViewPage type:



我真的很喜欢能够在代码隐藏中编写特定于 View 的代码来输出 View - 特别是如果我在页面的几个部分重复逻辑,我无法证明创建部分 View 是合理的。

我的实际问题:斯科特说 默认 - 这意味着我可以改变这种行为,但我似乎看不到在哪里。是否可以?手动创建一个代码隐藏文件并改变周围的东西是一种痛苦。

这也会导致另一个问题:
  • 如果我重构模型的名称,则 View 中的指令不会更新。这不是世界末日,而是完全强类型化的一个明显优势。

  • 附录:对于那些想知道为什么我想要代码隐藏的人,这里有一些可能的原因。这是我所想到的几乎所有内容的累积列表。不言而喻(应该如此),除了模型中已有的数据之外,您不得访问任何数据。 LINQ 可以用于模型数据的简单操作,但 LINQ to SQL 则不行! MVC 适用于应该已经知道这一点的人——这就是我喜欢它的原因——由聪明的人为聪明的人制作。
  • 数据绑定(bind)旧版 ASP.NET 控件 - 如果替代方案不可用或需要临时解决方案。
  • 查看需要递归以创建某种嵌套或分层 HTML 的逻辑。
  • 查看使用临时变量的逻辑。我拒绝在我的标签汤中定义局部变量!我至少希望它们作为 View 类的属性。
  • 仅特定于一个 View 或模型且不属于 HtmlHelper 的逻辑。作为旁注,我认为 HtmlHelper 不应该知道任何“模型”类。如果它知道模型中定义的类(例如 IEnumerable<Product> ,但我认为您不应该拥有一个采用 ProductModel 的 HtmlHelper 。
  • 当您键入 Html+dot 时,HtmlHelper 方法最终会从您的所有 View 中可见。我真的想尽可能地减少这个列表。
  • 如果我想编写使用 HtmlGenericControl 的代码怎么办?和该命名空间中的其他类以面向对象的方式生成我的 HTML(或者我有执行我想要移植的现有代码)。
  • 如果我打算将来使用不同的 View 引擎怎么办。我可能希望将一些逻辑保留在标签汤之外,以便以后更容易重用。
  • 如果我希望能够重命名我的模型类并让它自动重构我的 View ,而无需转到 view.aspx 并更改类名,该怎么办?
  • 如果我正在与一个我不信任的 HTML 设计师协调,他不会弄乱“标签汤”,并且想要在 .aspx.cs 文件中编写除非常基本的循环之外的任何内容。

  • 我认为人们对“代码隐藏”有偏见,因为它传统上被解释为“事件处理代码”,而不是“ View 部分类的另一半”。

    View 的代码隐藏很好。

    我并不反对它会使文件夹结构有些困惑,但这就是 +图标用于。我只希望能够使用“添加 View ”创建带有代码隐藏的 View 。

    最佳答案

    要直接回答您的问题,我认为您无法更改此默认设置。您可以尝试修改模板(在 %programfiles%\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates"中的某个位置),但我不确定。

    但是,这种场景的“MVC 方式”可能是在一个单独的类中创建一个自定义帮助器。

    我最近编写了一个使用 Gravatar (http://www.gravatar.com) 来生成个人资料图片的网络应用程序,并且我一直在我的 View 中编写相同的自定义 标签,所以我创建了一个帮助程序:Html.Gravatar()

    只需创建一个静态类“MyHelpers”或“GravatarHelpers”或“FooHelpers”并添加带有如下签名的静态扩展方法:

    public static string Gravatar(this HtmlHelper htmlHelper, string emailAddress) {
    return htmlHelper.Image(...);
    }

    或者,如果您使用强类型 View (ViewPage ) 并希望利用它,您可以扩展 HtmlHelper
    public static string Foo<TModel>(this HtmlHelper<TModel> htmlHelper, ...) {
    // Do stuff
    return // Stuff
    }

    您可以轻松地将 HtmlHelper 切换为 UrlHelper 或 AjaxHelper。我相信您还可以从助手上的 ViewContext 属性访问 ViewData 等。

    关于.net - 如何获取 'codebehind' 文件,以便默认创建 RC1 中的 ASP.NET-MVC View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/489415/

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