从视图重定向到asp.net mvc中的不同视图

时间:2015-01-21 14:34:34

标签: c# asp.net asp.net-mvc-4

我在通过控制器操作将数据从一个视图传输到另一个视图时遇到问题。 我的第一个视图是grid.mvc-Grid显示。通过选择网格的行,我得到该对象的ID。 通过将其转移到控制器中的动作,我尝试过滤数据。这很好。

以下是过滤器:

[HttpGet]
public ActionResult PersonenById(int id)
{
    var personen = new ObservableCollection<Person>();
    //Getting the data here :-)

    foreach (DataRow r in access.Rows)
    {
        Person p = new Person();
        //do some stuff 
        personen.Add(p);
    }

    //return PartialView("Personen", personen); //does not work
    TempData["personen"] = personen;
    return RedirectToAction("Personen"); // redirect to another view
}

在方法II中,视图已填充:

public ActionResult Personen()
{
    var persons = new ObservableCollection<Person>();
    if (TempData["Persons"] == null)
    {

     }
  return View(persons); //Works perfect
}   
else
{
    persons = (ObservableCollection<Person>) TempData["Persons"];
    return View(persons);//does not redirect to that View
}

}

(抱歉奇怪的形成。: - ))

是否有任何不同的方式将数据从视图发送到另一个视图? 我试过了: 返回部分; 返回视图(&#34;人员#34;,人员);  还有很多其他的东西。

2 个答案:

答案 0 :(得分:0)

应该像这样工作:

return RedirectToAction("Personen", model);

此外,“Personen”操作应该将模型作为参数,如下所示:

public ActionResult Personen(Person model) ...

LE:我也注意到你试图通过TempData对象发送数据。确保索引对象的名称相同(例如,TempData["person"]无处不在)

希望它能回答你的问题。

答案 1 :(得分:0)

您可以在.cshtml视图中重定向。

例如:

    Context.Response.StatusCode = 403;
    Context.Response.Redirect(
        $"{Context.Request.PathBase}/Error/403", false);