2017-03-01 11 views
1

でビューステートを取得誰かがASP.NETの設定とプロパティ

public IList<GetProductPrice> CurrentPage 
    { 
     get { return ViewState["CurrentPage"] as List<GetProductPrice>; } 
     set { ViewState["CurrentPage"] = value; } 
    } 

答えて

0

それが呼び出されますプロパティ。

List<GetProductPrice> GetCurrentPage(){ 
    return ViewState["CurrentPage"] as List<GetProductPrice>; 
} 
void SetCurrentPage(List<GetProductPrice> value) { 
    ViewState["CurrentPage"] = value; 
} 
//i think its actual get_.. but it doesn't matter for the example 

したがって、ゲッターセッターの使いやすさが向上します。これはあなただけ使用して呼び出すことができます。

var test = CurrentPage; //compiled to var test = GetCurrenctPage(); 
CurrentPage = test; //compiled to SetCurrentPage(test); 

あなたは、このような空のゲッターとセッターのままにした場合:

public int CurrentPage 
{ 
    get; 
    set; 
} 

を、それはまた、それは、データを保存するクラス上のバッキングフィールドを生成します。

private int _currentPage; 
public GetCurrentPage(){ return _currentPage } 
public SetCurrentPage(int value) { _currentPage = value } 

なぜこれを行うのですか?

getterとsetterを使用するのは、javaの非常に古いベストプラクティスです(ideが生成するオプションがあります)。しかし、これにより多くの定型文が生成されます。

C#では、これらのプロパティを追加することでこれを解決しようとしています。しかし、なぜゲッターとセッターが必要なのでしょうか?たとえば、値が変更されたときに通知を受けたい場合(クラスをマークするためには、自分自身をダーティにします)。私は、エンティティのフレームワークは、モデルがそれ以外の場合はdb更新呼び出しをしない変更されたかどうかを追跡するために使用すると思います。コンパイル時にプロパティにコードを挿入する便利なツールもあります。余分な機能を追加する。

それを使用しない方法

:あなたが密かに任意の時点でこれを実行しないようにしてくださいので、HttpContextに依存しているため

HttpContext.Currentを返すためのプロパティを使用しては危険です!

getまたはset内のコードが非常に重い(非常に込み合っている)ときに、一般的にそれを使用することも悪い習慣です。コードを使用している誰かが、実際には非常に重いコードが実行されている間にプロパティ/フィールドを設定していると思うかもしれないので、悪い習慣です。そのベストプラクティスは、この代わりに、民間ゲッター/セッターのための特別な機能を作るために:

public int Property {get; private set; } 
public SetProperty(int value){ 
    //intensive code here: 
    Property = value; 
} 
+0

お返事ありがとうございました!あなたの返信ありがとう! – neo

0

このプロパティの下に書かれたコードは、中にViewStateを参照せずにローカルコレクションのようにそれを使用するには、プロパティの消費者をさせて頂いており、私を説明してくださいすることができますコード。コードをシンプルで使いやすくします。

get { return ViewState["CurrentPage"] as List<GetProductPrice>; } 

ここでのViewStateオブジェクトのViewState [ "currentPageには、" ここで一覧が[ "currentPageに"]のViewStateに割り当てられているGetProductPrice

set { ViewState["CurrentPage"] = value; } 

のリストに変換され

+0

ご返信ありがとうございます! – neo

0

このコードはのみViewStateが財産であるコントローラで動作します。このCurrentPageプロパティは、そのプロパティを通じて特定のViewStateアイテムにアクセスするための静的型付きの方法を提供します。

ViewState["CurrentPage"] as List<GetProductPrice>を "現在のページ"にアクセスするコントローラコードのまわりに振りかけるのではなく、単にCurrentPageプロパティを使うことができます。

「現在のページ」は、このような名前を付けた開発者が作成した用語ですが、List<GetProductPrice>が「現在のページ」とどのように関係しているかわかりません。

+0

! – neo

関連する問題