如何为视图或部分视图添加 Code-Behind 页面

17

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

现在如何向视图或部分视图添加代码后置类?


1
如何将代码后端页面添加到任何视图?将标题更改为此如何? - John Oxley
4个回答

23

如何为部分视图添加代码后端页面

这似乎并不是特别棘手,而且是可以做到的。这个答案适用于部分ViewUserControl ,但同样适用于普通的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" 继承该类即可使其工作。


4
谢谢您的反馈。我发现让两个文件关联更快的方法是右键点击它们,选择“从项目中排除”,然后在选中“显示所有文件”的情况下再次右键点击并重新包含它们。 - Andrew
3
在创建类blah.ascx.cs时,VS2010会立即将其与同一目录下的aspx页面关联起来。太棒了! - ashes999

4

1
这其实很简单。我需要使用代码后台来填充我正在使用的图表系列。它不允许我使用正常的MVC方法。这是一个现实世界中的妥协,它能起作用。 - Andrew Harry
在这种情况下,以下是您可以在没有代码后台的情况下使用图表的方法:http://code-inside.de/blog-in/2008/11/27/howto-use-the-new-aspnet-chart-controls-with-aspnet-mvc/ - Dan Atkinson
那么你是在告诉我你更喜欢在你的HTML中拥有非常混乱、难以管理的意大利面条式代码吗?我认为这是使用Code Behind的非常有效的方式。它不是控制器逻辑,也不是演示代码。它是演示准备工作。 - Andrew Harry
你不必把所有的代码都放在视图中。这只是为了向用户展示他们不需要使用代码后台来实现相同的功能。 - Dan Atkinson

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

1
要将一个codebehind文件添加到您的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基类。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接