寻找替代在控制器串行化数据(Looking for an alternative to serial

2019-10-19 00:31发布

我要寻找一个方法来从数据序列化(我原来使用这并MVC Futures程序),并通过它在我的控制器操作的东西,不使用连载切换。 我以前的实施是为直到它被提交,数据被保存的数据传递从行动对行动的向导。 但是,我无法在新项目中使用序列化和正在寻找一种替代。

下面是我在我的控制器做了一个例子:

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,这将变得一团糟,如果我在每个视图10个左右投入使用TempData的。

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

  1. 是否有一个清洁的替代,以这种方式使用序列化?
  2. 如果没有清洁的替代,我不得不这样做在每个ActionResult的,我不知道怎么做,如果,例如,我把它保持在一个输入视图和一个提交/确认视图,只是想传递两个值到“提交”步骤(上面未示出),诸如姓的电子邮件。 我会如何做,使用的TempData?

谢谢。

文章来源: Looking for an alternative to serializing data in controller