我希望保留2个值,以便从临时保存中进行下一次保存。 MVC 4

时间:2015-06-25 23:15:24

标签: asp.net-mvc-4 controller

用户输入PWS(公共供水系统),LabID。然后单击“保存”按钮 我希望这些值能够填充新的输入表单,现在可以在成功保存时清空。

RGB_565

Controller ActionResult 第一次通过:

@Html.TextBoxFor(model => model.PWS, new { @autofocus = "autofocus", @style="width:50px", @maxlength="5" }) 

单击“保存”按钮时:

[HttpGet]
public ActionResult AddColiform(string sortorder)
{
    int batchid;
    batchid = Convert.ToInt32(Session["ThisBatch"]);
    //Session["ThisBatch"] = batchid;
    ViewBag.Methods = FillMethods();
    ViewBag.Latest = (from m in _db.BactiBucket
                      where m.Batch_ID == batchid
                      select m).ToList();
    ViewBag.ThisBatch = batchid;
    return View(new BactiBucket());
}

2 个答案:

答案 0 :(得分:0)

好的,如果它是一条蛇,它会让我感到痛苦。

在ActionResult的声明中,我将文本框的值传递给控制器​​。它带有Post动作。 (PWS和LabID是输入的名称)。

[AcceptVerbs(HttpVerbs.Post)]
 public ActionResult AddColiform(BactiBucket bucket, string PWS, string LabID)

然后在返回RedirectToAction之前(" AddColiform");

我为每个值设置了Session变量: 会话[" PWS&#34] = PWS; 会话["拉比德&#34] =拉比德;

当然我可以使用ViewBag.PWS和ViewBag.LabID

然后,当返回并构建新的“添加记录”表单时, 我恭敬地填充每个文本框的@Value:

@Html.TextBoxFor(model => model.PWS, new {@Value=Session["PWS"], @autofocus = "autofocus", @style="width:50px", @maxlength="5" })

@Html.TextBoxFor(model => model.LabID, new {@Value=Session["LabID"], @style="width:150px", @maxlength="20" })

由于我没有运行此代码,我知道我必须检查Session对象是否为空。或ViewBag对象。或者将它们设置为""第一次通过。

我是从this forum thread

得到的

答案 1 :(得分:0)

您可以在重定向中将其他参数传递给GET方法,并使用这些值来设置模型的属性(请注意,当您从未使用过时,不清楚为什么您的方法有参数string sortorder)< / p>

[HttpGet]
public ActionResult AddColiform(string sortorder, string PWS, string LabID)
{
  ....
  BactiBucket model = new BactiBucket() { PWS = PWS, LabID = LabID };
  return View(model);
}

[HttpPost]
public ActionResult AddColiform(BactiBucket bucket)
{
  if (ModelState.IsValid)
  {
    ....
    return RedirectToAction("AddColiform", new { PWS = bucket.PWS, LabID = bucket.LabID });
  }
  ....
}