将部分页面属性移动到View后面没有代码

时间:2009-04-20 08:59:37

标签: asp.net asp.net-mvc code-behind

我正在重构使用以前版本的Asp.Net MVC构建的Web应用程序,其中所有视图都有2个代码隐藏文件。

此外,如果视图工作正常,我想开始删除文件后面的所有代码,因为大多数代码都是空的。

在代码隐藏中,很少有像这样的属性:

public partial class List {
    public Message NewMessage { get { return new Message(); } }
}

在完全删除它们之前(我知道这些方法与视图无关)如何在单页面aspx或ascx中复制它们?
我只是尝试在< %%>中复制并粘贴公共方法。标签,但这不起作用。

2 个答案:

答案 0 :(得分:3)

我可以问你为什么一开始就使用这种方法?我认为您可以通过强烈输入View来实现同样的目标,并将消息作为View的{​​{1}}传递。

Model

如果您已经有一个强类型Inherits="System.Web.Mvc.View<Message>" ,那么您可以在类库中创建一个可以为您的消息留出空间的自定义类,例如

View

当然,您也可以将该类型设为通用,允许使用public class ModelWithMessage { public Message Message { get; set; } public Object Model { get; set; } public ModelWithMessage(Message Message, Object Model) { this.Message = Message; this.Model = Model; } } 构造,并避免将ModelWithMessage<T>强制转换为您需要的任何类型。

另一种方法是使用Model。在您的Controller中,设置

TempData

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

即可将信息写出来
View

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

答案 1 :(得分:0)

你几乎已经在那里回答了这个,因为你说'我知道这种方法与观点无关':)

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