[英]How do I persist the value of the Textbox Text property of a user control when switching from one view to another?
[英]Getting a value to persist from one form to another in the same view
我的觀點有兩種形式...
@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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.