C# 在asp.net mvc中从视图重定向到其他视图
我在通过控件操作将数据从一个视图传输到另一个视图时遇到问题。 I第一个视图为grid.mvc-grid显示。通过在网格的行上选择,我获得该对象的ID。 通过将其传输到控制器中的操作,我尝试过滤数据。那很好 以下是过滤器:C# 在asp.net mvc中从视图重定向到其他视图,c#,asp.net,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc 4,我在通过控件操作将数据从一个视图传输到另一个视图时遇到问题。 I第一个视图为grid.mvc-grid显示。通过在网格的行上选择,我获得该对象的ID。 通过将其传输到控制器中的操作,我尝试过滤数据。那很好 以下是过滤器: [HttpGet] public ActionResult PersonenById(int id) { var personen = new ObservableCollection<Person>(); //Getting the data he
[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
}
}
很抱歉,格式有点奇怪- 从一个视图向另一个视图发送数据有什么不同的方法吗? 我试过: 返回部分; 返回观看者、观看者; 还有很多其他东西。应该是这样工作的:
return RedirectToAction("Personen", model);
public ActionResult Personen(Person model) ...
此外,Personen操作应将模型作为参数,如下所示:
return RedirectToAction("Personen", model);
public ActionResult Personen(Person model) ...
LE:我还注意到您试图通过TempData对象发送数据。确保索引对象的名称相同,例如,TempData[person]无处不在
希望它能回答您的问题。您可以在.cshtml视图中重定向 例如:
对于奇怪的格式设置很抱歉-不要道歉,只需正确设置格式即可,因为代码几乎不可读。您的行尾不正确。已格式化的部分代码块有太多大括号,因此不确定应该是什么代码。还有TempData[个人]!=TempData[personen]感谢您的提示,但TempData[person]只是由复制粘贴引起的错误。当我为targetview设置断点时,将在视图中到达断点。但是视图没有显示。您是说.cshtml还是.aspx视图?如果是,您必须指定相同的ObservableCollection模型。您好,Andrei。是的,它是一个.cshtml视图。ObservableCollection与imo相同。否则视图中的网格将无法获得任何数据,或者?不会发生的是重定向到浏览器中的不同视图。视图未显示。无法使用有效负载执行重定向。重定向会导致客户端浏览器对新URL发出GET请求。因此,您只能通过查询字符串传递数据,因为GET方法只支持查询字符串。虽然您可以尝试将类分解为查询字符串参数,但这会很麻烦。如果您需要使用同一个对象,最好只传递带有新URL的id,然后用它再次查找。