我注意到最新版本的ASP.NET MVC中,视图不再默认具有代码后置类。
现在如何向视图或部分视图添加代码后置类?
我注意到最新版本的ASP.NET MVC中,视图不再默认具有代码后置类。
现在如何向视图或部分视图添加代码后置类?
如何为部分视图添加代码后端页面
这似乎并不是特别棘手,而且是可以做到的。这个答案适用于部分ViewUserControl
,但同样适用于普通的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" 继承该类即可使其工作。
好的,我已经验证了解决方案,下面是需要注意的几点:
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;
}
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
{...}
Partial Class Home_Index
Inherits System.Web.Mvc.ViewPage
...
End Class
就这样。唯一特别的是使用正确的Mvc.ViewPage
基类。