将值从控制器传递到视图

时间:2011-06-09 04:04:55

标签: asp.net asp.net-mvc asp.net-mvc-3

我在从控制器传递值到视图

时遇到问题

在控制器中,在编辑方法

    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变为空。如果此程序正确,您可以告诉我吗?

2 个答案:

答案 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