0

こんにちは、MVC3 でアプリケーションを開発しています。そして私は一箇所で立ち往生しています。

私のビューには、クラスの一部ではない 2 つのフィールドがあります。ドロップダウンに入力するためにそれらを使用しているだけです.2つのフィールドは州と地区です. しかし、2 つのフィールドの選択した値を別のビューに表示したいと考えています。

ViewBag を使用して試しましたが、これは機能せず、Null が表示されます。

これはCreate 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;

このデータを別のビューでのみ表示する必要があるため、Create coz の post メソッドを使用できません。または、同じビューにデータを表示できる方法があるかどうか。

4

2 に答える 2

4

ViewBag は ViewData に似ています。ページ間で情報を保持するには、その情報をセッションに保存する必要があります。次の 2 つの方法でそれを行うことができます。

次のようなセッション変数を使用します。

this.Session["SessionVariable"] = value;

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

this.TempData["SessionVariable"] = value;

この 2 つの違いは、TempData オブジェクトが読み取り時にセッションから削除されることです。

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

于 2012-04-19T11:09:40.507 に答える
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...
    }
}
于 2012-04-18T09:39:16.700 に答える