Asp.net 将部分页面属性移动到无代码隐藏的视图

Asp.net 将部分页面属性移动到无代码隐藏的视图,asp.net,asp.net-mvc,code-behind,Asp.net,Asp.net Mvc,Code Behind,我正在重构一个使用Asp.NETMVC早期版本构建的web应用程序,其中所有视图都有2个代码隐藏文件 此外,如果视图工作正常,我希望开始删除所有代码隐藏文件,因为它们大多数是空的 在codebehind中很少有这样的属性: public partial class List { public Message NewMessage { get { return new Message(); } } } 在完全删除它们之前(我知道此方法不适用于视图),如何在单页aspx或ascx中复制它们

我正在重构一个使用Asp.NETMVC早期版本构建的web应用程序,其中所有视图都有2个代码隐藏文件

此外,如果视图工作正常,我希望开始删除所有代码隐藏文件,因为它们大多数是空的

在codebehind中很少有这样的属性:

public partial class List {
    public Message NewMessage { get { return new Message(); } }
}
在完全删除它们之前(我知道此方法不适用于视图),如何在单页aspx或ascx中复制它们?

我只是尝试在标记中复制和粘贴公共方法,但这不起作用。

我可以问一下,为什么您首先要使用这种方法吗?我认为,通过将
视图
强类型化,并将消息作为
视图
模型
传递,您也可以实现同样的效果

Inherits="System.Web.Mvc.View<Message>"
当然,您也可以将该类型设置为泛型,允许使用
ModelWithMessage
构造,并避免将
Model
强制转换为您需要的任何类型

另一种方法是使用
TempData
。在控制器中,设置

TempData["Message"] = "Hello world!";
然后在
视图中
只需使用

<%= TempData["Message"] %>


您选择哪种方法取决于您的Message类包含的内容。

我可以问一下您为什么要首先使用这种方法吗?我认为,通过将
视图
强类型化,并将消息作为
视图
模型
传递,您也可以实现同样的效果

Inherits="System.Web.Mvc.View<Message>"
当然,您也可以将该类型设置为泛型,允许使用
ModelWithMessage
构造,并避免将
Model
强制转换为您需要的任何类型

另一种方法是使用
TempData
。在控制器中,设置

TempData["Message"] = "Hello world!";
然后在
视图中
只需使用

<%= TempData["Message"] %>


您选择哪种方法取决于您的消息类所包含的内容。

您几乎已经亲自回答了这个问题,正如您所说的“我知道此方法不适用于视图”:


首先,我会将这些方法移到控制器类中,并在模型中传递任何所需的数据(假设这是它们的适当位置),然后当您从代码隐藏文件中删除所有功能并再次进行完全分离时,您可以着手从视图中删除codebehind文件。

您自己几乎已经回答了这个问题,正如您所说的“我知道此方法不适用于视图”:

首先,我将这些方法移到控制器类中,并在模型中传递任何所需的数据(假设这是它们的适当位置),然后,当您从代码隐藏文件中删除所有功能并再次完全分离后,您可以开始从视图中删除代码隐藏文件