获取要在同一视图中从一个窗体保存到另一个窗体的值



我的视图有两个表单...

@using (Html.BeginForm("Upload", "CSV", 
null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
--file picker--
<div class="form-group">
<input type="submit" value="Upload" class="btn btn-default" />
</div>

}

@using (Html.BeginForm("Add", "CSV", 
null, FormMethod.Post, new { enctype   = "multipart/form-data" }))

{

--- other functionality--
<div class="form-group">
<input type="submit" value="Add" id="ShortURL" class="btn btn-default" />
</div>

}

此视图链接到具有 ID 字段的模型。 当我到达此视图时,我正在从另一个视图传递 ID,我需要执行"添加"方法。 如果我先做"添加",它工作正常。
但是,如果我先执行"上传",那么当它返回控制器时,我会丢失 ID。在先转到 Upload 方法,然后转到 Add 方法后,如何存储 ID?

以下是相关的控制器方法...

[HttpPost]
public ActionResult Upload(HttpPostedFileBase upload)
{
if (ModelState.IsValid)
{
if (TempData["Model"] != null)
{
var data = TempData["Model"] as CSV;
CSV UploadData = data;
UploadData.ID = UploadData.Upload(upload, data.ID);
return View("CSV", UploadData);
}
}
return View("CSV");
}

public ActionResult CSV(CSV Model)
{
TempData["Model"] = Model;
return View("CSV",Model);
}
[HttpPost]
public ActionResult Add(CSV Model)
{
//need to use the ID field in here
}

您可以尝试在控制器内部使用

TempData.Peek("Model")

而不是

TempData["Model"]

TempData 标记与要在一次调用/使用后删除的密钥关联的数据。通过使用 peek 方法,可以查看与键关联的值,而无需删除它。由于这种行为,它会在一次使用后自行删除,因此您必须查看或保留以将数据保留一次使用。

另一种方式是

TempData["model"]
// some code
TempData.Keep("model")

更详细、更清晰的解释:TempData keep(( vs peek((

相关内容

最新更新