如何将代码隐藏页面添加到视图或部分视图
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 文件添加到布局头