【问题标题】:how to add a code-behind page to a view or partial view如何将代码隐藏页面添加到视图或部分视图
【发布时间】:2010-10-15 09:24:53
【问题描述】:

我注意到最新版本的 ASP.NET MVC 视图不再默认具有代码隐藏类。

现在如何将代码隐藏类添加到视图或部分视图??

【问题讨论】:

  • 如何将标题更改为阅读如何将代码隐藏页面添加到任何视图

标签: asp.net-mvc views code-behind


【解决方案1】:

如何将代码隐藏页面添加到部分视图

似乎这并不是特别棘手,而且非常可行。此答案适用于 Partial ViewUserControl,但同样适用于 Normal MVC ViewPage

  1. 使用<view filename & extention>.cs(即view.ascx.cs)的约定添加一个新的类文件

  2. using System.Web.Mvc; 添加到类

  3. 将类更改为从ViewUserControl<> 继承。
    public class Foo:ViewUserControl

  4. 将以下内容添加到视图的标题中:

    CodeBehind="View.ascx.cs" Inherits="Project.Views.Shared.View"

  5. 将文件从解决方案中复制出来并拖回以将两者重新关联在一起。这在 VS 2010+ 和 MVC 2+ 中可能不是必需的。

要让它与普通的 MVC 视图一起工作,你只需要从 "ViewPage" 继承类

【讨论】:

  • 谢谢。我发现将这两个文件关联在一起的更快方法是右键单击它们,选择从项目中排除,然后选择“显示所有文件”再次右键单击它们并重新包含它们。
  • VS2010 会在您创建类 blah.ascx.cs(与 aspx 页面位于同一目录中)后立即关联它们。太棒了。
【解决方案2】:

我不确定您为什么要创建文件隐藏代码,但如果您真的这样做,那么我会考虑使用标准的网络表单方法。

我还将研究 MVC 的基础知识,以了解为什么不需要页面隐藏。

Another explanation

How to use ASP:Chart without a code-behind (Option B)

【讨论】:

  • 真的很简单。我需要使用后面的代码来填充我正在使用的图表系列。它不会让我使用普通的 MVC 方法。这是一个真实世界的妥协,而且有效。
  • 在这种情况下,您可以在没有代码隐藏的情况下使用 Chart:code-inside.de/blog-in/2008/11/27/…
  • 那么您是在告诉我您希望在您的 html 中使用非常凌乱难以管理的意大利面条代码吗?我认为这是非常有效地使用后面的代码。它不是控制器逻辑,也不是演示代码。这是演示准备。
  • 您没有将所有代码放在视图中。它只是为了向用户展示他们不需要使用代码隐藏来实现相同的目标。
【解决方案3】:

好的,我已经验证了解决方案,这里有一点你需要注意:

CodeBehind="View.ascx.cs" Inherits="Project.Views.Shared.View"

在您的情况下,您需要根据您的命名空间和类名更改“Project.Views.Shared.View”,并且为了访问代码隐藏中的控件,您必须在代码隐藏中手动添加声明.就我而言,我需要初始化 gigaSoft proEssential 控件:

public class gigaTest2 : ViewUserControl
{
    protected global::Gigasoft.ProEssentials.PegoWeb PegoWeb1;
    protected void Page_Load(object sender, EventArgs e)
    {
        // Set Titles 
        PegoWeb1.PeString.MainTitle = "Hello ASP.NET";
        PegoWeb1.PeString.SubTitle = "";

        // One simple way of passing data, data binding also possible. //' 
        PegoWeb1.PeData.Subsets = 1;
        PegoWeb1.PeData.Points = 6;
        PegoWeb1.PeData.Y[0, 0] = 10;
        PegoWeb1.PeData.Y[0, 1] = 30;
        PegoWeb1.PeData.Y[0, 2] = 20;
        PegoWeb1.PeData.Y[0, 3] = 40;
        PegoWeb1.PeData.Y[0, 4] = 30;
        PegoWeb1.PeData.Y[0, 5] = 50;

        // Set style of chart and a few other properties //' 
        PegoWeb1.PePlot.Method = Gigasoft.ProEssentials.Enums.GraphPlottingMethod.Bar;
        PegoWeb1.PePlot.Option.GradientBars = 8;
        PegoWeb1.PeFont.FontSize = Gigasoft.ProEssentials.Enums.FontSize.Large;
    }

【讨论】:

    【解决方案4】:

    要将代码隐藏文件添加到您的 aspx 页面,同时仍允许它成为 MVC 视图的目标,请执行以下操作。

    对于名为Index.aspx的查看页面...

    替换下面的代码....

    <%@ Page Inherits="System.Web.Mvc.ViewPage" %>
    

    <%@ Page CodeFile="Index.aspx.vb" Inherits="Home_Index" %>
    

    然后创建一个名为Index.aspx.cs(或.vb)的文件。

    partial class Home_Index : System.Web.Mvc.ViewPage
    {...}
    

    或VB

    Partial Class Home_Index
        Inherits System.Web.Mvc.ViewPage
        ...
    End Class
    

    就是这样。唯一特别的是使用正确的Mvc.ViewPage 基类。

    【讨论】:

      猜你喜欢
      • 2011-06-03
      • 2016-11-27
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多