我正在尝试将视图模型和一些其他数据从一个控制器操作方法传递到同一个控制器中的另一个操作方法。参数 - 参数对需要处理各种视图模型。为此,我将视图模型对象和其他数据存储在对象中。
public class infViewModel
{
//Fields...
}
public class infElement
{
public Guid ID { get; set; }
public object ViewModel { get; set; }
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult actionOne(infViewModel pCurrentViewModel)
{
infViewModel _CurrentViewModel = new infViewModel();
_CurrentViewModel = pCurrentViewModel;
infElement _Element = new infElement();
_Element.ViewModel = _CurrentViewModel;
return RedirectToAction(“actionTwo”, _Element);
}
public ActionResult actionTwo(infElement pElement)
{
}
我可以传递不同类型的数据,例如string
和Guid
,但无法传递包含视图模型的对象。
我观察到参数和参数之间某处的数据丢失:
参数对象QuickWatch
的{{1}}显示预期的数据,包括_Element
对象以及ViewModel的字段和字段的相应内容。
另一方面,参数对象_Element.ViewModel
的{{1}}表示QuickWatch
对象变为普通字符串。该字符串是名称空间,类等的串联。同时,其他数据(如pElement
)显示完整。
我pElement.ViewModel
通用:
pElement.ID
但结果基本相同,但现在infElement
为public class infElement<T>
{
public Guid ID { get; set; }
public T ViewModel { get; set; }
}
。
如何在动作结果中传输视图模型?
答案 0 :(得分:0)
这是TempData
合适的地方:
public ActionResult actionOne(infViewModel pCurrentViewModel)
{
infViewModel _CurrentViewModel = new infViewModel();
_CurrentViewModel = pCurrentViewModel;
infElement _Element = new infElement();
_Element.ViewModel = _CurrentViewModel;
TempData["_Element"] = _Element;
return RedirectToAction("actionTwo");
}
public ActionResult actionTwo()
{
var _Element = TempData["_Element"] as infElement;
// ...
}