您好我正在开发MVC3中的应用程序。 我被困在一个地方。
我的视图中有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;
我不能使用创建coz的post方法我只需要在另一个视图上显示此数据。 或者,如果他们是我可以在同一视图中显示数据的任何方法。
答案 0 :(得分:4)
ViewBag就像ViewData。为了在页面之间获取信息,您应该将该信息存储在会话中。你可以用两种方式做到这一点:
使用会话变量,如:
this.Session["SessionVariable"] = value;
或者使用this.TempData对象:
this.TempData["SessionVariable"] = value;
这两者之间的区别在于TempData对象在读取时会从会话中删除。
TempData只是会话的包装。
答案 1 :(得分: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...
}
}