在控制器和表单之间跳转时的MVC保留模型

时间:2017-01-06 20:34:38

标签: model-view-controller controller models

所以我最近在.net MVC中启动了项目,并且一直在保留数据。我在某处读到,为了做到这一点,你必须来回传递模型。我试过这样做,但它仍然遇到问题。在我的项目中,我现在有两个按钮,getData和getData2。我的视图打印了它们的真/假值。当我按下一个时,它会变为真,但是如果我按下另一个,它会变为真,但另一个变为假。如果我同时按下它们,我希望它们都能保持真实。

控制器:

[HttpPost]
public ActionResult GetData(TestSite.Models.FarModels theFars)
{      
    theFars.HasData = true;
    return RedirectToAction("FarCalc",theFars);             
}

[HttpPost]
public ActionResult GetData2(TestSite.Models.FarModels theFars)
{
    theFars.HasData2 = true;
    return RedirectToAction("FarCalc", theFars);
}

[HttpGet]
public ActionResult FarCalc(TestSite.Models.FarModels theFars)
{                                
    return View(theFars);
}

查看:

@using (Html.BeginForm("GetData", "Home", FormMethod.Post))

   {

    //@Html.TextBoxFor(model => model.FarValue)

    <input type="submit" value="GetData" />
}

@using (Html.BeginForm("GetData2", "Home", FormMethod.Post))

{

    //@Html.TextBoxFor(model => model.FarValue)

    <input type="submit" value="GetData2" />
}

@Model.HasData
@Model.HasData2

由于

1 个答案:

答案 0 :(得分:0)

您需要使用TempData对象,因为使用RedirectToAction会返回状态代码302,并且模型绑定不存在。下面是一个很好的例子。

https://www.codeproject.com/Tips/842080/How-to-Persist-Data-with-TempData-in-MVC