我的观点有两种形式......
@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
}
答案 0 :(得分:0)
您可以尝试在控制器内部使用
TempData.Peek("Model")
而不是
TempData["Model"]
TempData标记与一次呼叫/使用后要删除的密钥相关联的数据。通过使用peek方法,您可以查看与键关联的值而不删除它。由于这种行为会在一次使用后自行删除,因此您必须查看或保持数据超过一次使用。
另一种方式是
TempData["model"]
// some code
TempData.Keep("model")
更详细,更清晰的解释:TempData keep() vs peek()