0

嗨,我正在 MVC3 中开发一个应用程序。我被困在一个地方。

我认为有 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 的 post 方法,因为我只需要在另一个视图上显示这些数据。或者如果是他们的任何方法,我可以在同一视图中显示数据。

4

2 回答 2

4

ViewBag 就像 ViewData。为了在页面之间获取信息,您应该将该信息存储在会话中。您可以通过 2 种方式做到这一点:

使用会话变量,例如:

this.Session["SessionVariable"] = value;

或者使用 this.TempData 对象:

this.TempData["SessionVariable"] = value;

这两者的区别在于,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 回答