我注意到最新版本的ASP.NET MVC,View不再默认使用代码隐藏类。
如何立即向View或Partial View添加代码隐藏类?
答案 0 :(得分:23)
如何将代码隐藏页面添加到部分视图
似乎这并不是特别棘手,而且非常可行。这个答案适用于部分ViewUserControl
,但同样适用于普通MVC ViewPage
以及
添加一个约定为<view filename & extention>.cs
的新类文件(即view.ascx.cs
)
将using System.Web.Mvc;
添加到班级
将类更改为从ViewUserControl<>
继承。
即public class Foo:ViewUserControl
将以下内容添加到View的标题中:
CodeBehind="View.ascx.cs" Inherits="Project.Views.Shared.View"
将文件复制出解决方案并重新拖回以将两者重新关联在一起。在VS 2010+和MVC 2 +中可能没有必要这样做。
为了使用普通的MVC View,您只需要从“ViewPage”继承该类
答案 1 :(得分:4)
我不确定你为什么要创建一个代码隐藏文件,但如果你真的这样做,那么我会考虑使用标准的webforms方法。
我还会研究MVC的基础知识,以了解为什么不需要页面隐藏。
答案 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
基类。