0

すべてのビューにそれぞれ 2 つの分離コード ファイルがある、以前のバージョンの Asp.Net MVC で構築された Web アプリをリファクタリングしています。

また、ビューが正しく機能している場合は、コード ビハインド ファイルのほとんどが空であるため、すべてのコード ビハインド ファイルの削除を開始したいと考えています。

コードビハインドでこのようなプロパティを持つものはほとんどありません。

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

それらを完全に削除する前に (このメソッドがビューに関係しないことはわかっています)、単一ページの aspx または ascx でそれらを複製するにはどうすればよいですか?
<% %> タグのパブリック メソッドをコピー アンド ペーストしようとしましたが、うまくいきません。

4

2 に答える 2

3

May I ask why you were using this approach in the first place? I think you could achieve the same thing by making your View strongly typed, and pass the message as the View's Model.

Inherits="System.Web.Mvc.View<Message>"

If you already have a strongly typed View, you could make a custom class in your class library that has room for your message, for example

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;
    }
}

You can of course make that type generic as well, allowing for a ModelWithMessage<T> construct and avoiding having to cast the Model to whatever type you need.

Another way to do it would be to use TempData. In your Controller, set

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

Then in your View you write the message out simply with

<%= TempData["Message"] %>

Which approach you choose depends on what your Message class contains.

于 2009-04-20T09:17:11.017 に答える
0

You've almost answered this for yourself there as you said 'I know this methods do not pertain to the views' :)

First I would move these methods out to the controller classes and pass any required data across in the Model (assuming that's an appropriate place for them), then when you have removed all the functionality from your code-behind files and have a clean separation again, you can go about removing the codebehind files from your views.

于 2009-04-20T09:18:23.527 に答える