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

Posted

技术标签:

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

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

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

【问题讨论】:

如何将标题更改为阅读如何将代码隐藏页面添加到任何视图 【参考方案1】:

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

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

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

    using System.Web.Mvc; 添加到类

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

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

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

    将文件从解决方案中复制出来并拖回以将两者重新关联在一起。这在 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 基类。

【讨论】:

以上是关于如何将代码隐藏页面添加到视图或部分视图的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的视图的 javascript 访问我的代码隐藏文件中的 JsonResult 变量?剃刀页面。 C#

从视图或部分视图将 CSS 或 JavaScript 文件添加到布局头

如何将方法添加到类模板视图

如何从静态单元格表​​格视图中删除部分

Xamarin.Forms Shell 将数据传递到弹出项视图

如何在没有代码的情况下隐藏 Android 布局 xml 中的部分可见视图?