2012-04-18 7 views
0

こんにちは、私はMVC3でアプリケーションを開発しています。 と私は1つの場所で立ち往生しています。mvc3で異なるビューを持つあるアクションから別のアクションに値を渡す方法

私のクラスに含まれていない2つのフィールドが私のビューにあります。 私はそれらを使ってドロップダウンを設定しています 2つのフィールドはStateとDistrictです。 しかし、私は別のビューで2つのフィールドの選択値を表示したい。

私はViewBagを使ってみましたが、これはうまく動作せず、Nullを返します。

これは内部のgetメソッドを作成します

int stateid = Convert.ToInt32(formcollection["ProvincialState.ProvincialStateID"]); 
int districtid = Convert.ToInt32(formcollection["District.DistrictID"]); 

ProvincialState state = new AddressService().FetchStateByStateId(stateid); 
District district = new AddressService().FetchDistrictByDistrictId(districtid); 

ViewBag.State = state.ProvincialStateName; 
ViewBag.District = district.DistrictName; 

をし、これが詳細ビュー内にある:

string data1 = ViewBag.State; 
string data2 = ViewBag.District; 
ViewBag.State = data1; 
ViewBag.District = data2; 

私は別のビューでこのデータを表示する必要があるだって、私は作成のPOSTメソッドを使用することはできません。 、またはそれらがデータを同じビューに表示できる任意の方法であるかどうかを確認します。

+0

ページの返品の種類は何ですか?別のページの場合は、Return RedirectToAction( "Action")を使用します。 –

答えて

4

ViewBagはViewDataをのようなものです。ページ間に情報を格納するには、その情報をセッションに保存する必要があります。あなたは、2通りの方法でそれを行うことができます。

this.Session["SessionVariable"] = value; 

またはthis.TempDataオブジェクトを使用します:

は次のようにセッション変数を使用し

this.TempData["SessionVariable"] = value; 

この両者の差がTempDataを対象ということですセッションが読み込まれると、セッションから削除されます。

TempDataは、セッションの単なるラッパーです。

0

あなたがモデルに加えて、あなたの行動には、このフィールドを送り、その後、例えばセッションに保存することができます

public class SomeController: Controller 
{ 
    [HttpPost] 
    public ActionResult DoSomething(MyModel model, int state, int district) 
    { 
     // validating model... 
     // ... 

     Session["state"] = state; 
     Session["district"] = district; 
     // some other logic... 
    } 
} 
関連する問題