我在从控制器传递值到视图
时遇到问题在控制器中,在编辑方法
中 public ActionResult Edit( FormCollection form)
{
var id = Int32.Parse(form["CustomerServiceMappingID"]);
var datacontext = new ServicesDataContext();
var serviceToUpdate = datacontext.Mapings.First(m => m.CustomerServiceMappingID == id);
TryUpdateModel(serviceToUpdate, new string[] { "CustomerID", "ServiceID", "Status" }, form.ToValueProvider());
if (ModelState.IsValid)
{
try
{
var qw = (from m in datacontext.Mapings
where id == m.CustomerServiceMappingID
select m.CustomerID).First();
ViewData["CustomerID"] = qw;
datacontext.SubmitChanges();
//return Redirect("/Customerservice/Index/qw");
return RedirectToAction("Index", new { id = qw });
}
catch{
}
}
return View(serviceToUpdate);
}
现在在编辑视图中,我使用了这个
@Html.Encode(ViewData["CustomerID"])
这是我的索引方法
public ActionResult Index(int id)
{
var dc = new ServicesDataContext();
var query = (from m in dc.Mapings
where m.CustomerID == id
select m);
// var a = dc.Customers.First(m => m.CustomerId == id);
// ViewData.Model = a;
// return View();
return View(query);
}
但页面上的customerID变为空。如果此程序正确,您可以告诉我吗?
答案 0 :(得分:1)
您无需重新查询ID。只需直接使用id:
if (ModelState.IsValid)
{
datacontext.SubmitChanges();
//return Redirect("/Customerservice/Index/qw");
return RedirectToAction("Index", new { id = id});
}
由于您重定向ViewData [“CustomerID”]将丢失。 但是,Index方法中的id应该有效。 如果您的索引视图需要ViewData [“CustomerID”]在Index操作中设置它:
public ActionResult Index(int id)
{
ViewData["CustomerID"] = id;
//....
答案 1 :(得分:0)
我对哪个视图无权访问ViewData["CustomerId"]
感到困惑。如果是索引视图,则应在此处设置ViewData["CustomerId"] = id
。