Asp.net mvc 3 正在寻找在控制器中序列化数据的替代方法

Asp.net mvc 3 正在寻找在控制器中序列化数据的替代方法,asp.net-mvc-3,asp.net-mvc-4,Asp.net Mvc 3,Asp.net Mvc 4,我正在寻找一种方法,从最初使用Mvc Futures对数据进行序列化并将其传递给控制器操作,切换到不使用serialize的方法。我以前的实现是针对一个向导的,该向导将数据从一个操作传递到另一个操作,直到提交并保存数据。但是,我无法在新项目中使用序列化,正在寻找替代方案 以下是我在控制器中所做操作的示例: private MyViewModel myViewModel; protected override void OnActionExecuting(ActionExecutingContex

我正在寻找一种方法,从最初使用Mvc Futures对数据进行序列化并将其传递给控制器操作,切换到不使用serialize的方法。我以前的实现是针对一个向导的,该向导将数据从一个操作传递到另一个操作,直到提交并保存数据。但是,我无法在新项目中使用序列化,正在寻找替代方案

以下是我在控制器中所做操作的示例:

private MyViewModel myViewModel;
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    var serialized = Request.Form["myViewModel"];
    if (serialized != null) //Form was posted containing serialized data
    {
        myViewModel = (MyViewModel)new MvcSerializer()
            .Deserialize(serialized, SerializationMode.Signed);

            TryUpdateModel(myViewModel);
    }
    else
        myViewModel= (MyViewModel)TempData["myViewModel"] ?? new MyViewModel();
        TempData.Keep();
}
protected override void OnResultExecuted(ResultExecutedContext filterContext)
{
    if (filterContext.Result is RedirectToRouteResult)
        TempData["myViewModel"] = myViewModel;
}
然后在一些行动中:

// STEP 1:
public ActionResult Step1()
{
    return View(myViewModel);
}

[HttpPost]
[ActionName("Step1")]
public ActionResult Step1POST(string nextButton)
{
    if ((nextButton != null) && ModelState.IsValid)
        return RedirectToAction("Step2");
    return View(myViewModel);
}


// STEP 2:
[Themed]
public ActionResult Step2()
{
    return View(myViewModel);
}

[HttpPost]
[ActionName("Step2")]
public ActionResult Step2POST(string backButton, string nextButton)
{
    if (backButton != null)
        return RedirectToAction("Step1");
    else if ((nextButton != null) && ModelState.IsValid)
        return RedirectToAction("Step3");
    return View(myViewModel);
}
我的视图将在@Html.BeginForm块中包含以下内容:

@Html.Hidden("myViewModel", 
    new MvcSerializer().Serialize(Model, SerializationMode.Signed))
我的第一个想法是,除了jQuery之外,我没有其他选择,我现在也不能使用它。在这个场景中,我必须弄清楚如何在每个ActionResult中使用TempData,如果在每个视图中有10个左右的输入,就会变得很混乱

所以我的问题可能有两个方面:

以这种方式使用serialize是否有一种干净的替代方法? 如果没有干净的替代品,我被迫在每一个地方都这样做 ActionResult,例如,如果我 它被转换到一个输入视图和一个提交/确认视图,只想 向上面未显示的提交步骤传递两个值,例如 给电子邮件起名。我如何使用TempData实现这一点? 谢谢