0

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

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

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

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

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

4

2 回答 2

3

请问您为什么首先使用这种方法?我认为你可以通过使你的View强类型来实现同样的事情,并将消息作为View's传递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转换为您需要的任何类型。

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

TempData["Message"] = "Hello world!";

然后在您中,View您只需使用

<%= TempData["Message"] %>

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

于 2009-04-20T09:17:11.017 回答
0

你几乎已经为自己回答了这个问题,因为你说'我知道这种方法与视图无关':)

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

于 2009-04-20T09:18:23.527 回答