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

时间:2009-03-25 06:37:55

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

我注意到最新版本的ASP.NET MVC,View不再默认使用代码隐藏类。

如何立即向View或Partial View添加代码隐藏类?

4 个答案:

答案 0 :(得分:23)

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

似乎这并不是特别棘手,而且非常可行。这个答案适用于部分ViewUserControl,但同样适用于普通MVC ViewPage以及

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

  2. using System.Web.Mvc;添加到班级

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

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

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

  5. 将文件复制出解决方案并重新拖回以将两者重新关联在一起。在VS 2010+和MVC 2 +中可能没有必要这样做。

  6. 为了使用普通的MVC View,您只需要从“ViewPage”继承该类

答案 1 :(得分:4)

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

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

Another explanation

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

答案 2 :(得分:2)

好的,我已经验证了解决方案,这是您需要注意的事项:

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;
    }

答案 3 :(得分:1)

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

对于名为add n (S ?M1580) ...

的视图页面

替换以下代码......

Index.aspx

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

然后创建一个名为<%@ Page CodeFile="Index.aspx.vb" Inherits="Home_Index" %> (或Index.aspx.cs)的文件。

.vb

或VB

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

那就是它。唯一特别的是使用正确的Partial Class Home_Index Inherits System.Web.Mvc.ViewPage ... End Class 基类。