Получение значения для сохранения из одной формы в другую в том же виде - PullRequest
0 голосов
/ 15 мая 2018

В моем представлении есть две формы ...

@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>

}

Это представлениесвязан с моделью с идентификатором поля.К тому времени, когда я доберусь до этого представления, я передаю идентификатор из другого представления, которое мне нужно для выполнения метода «Добавить».И если я сначала делаю «Добавить», он работает нормально.
Однако, если я сначала делаю «Загрузка», я теряю идентификатор, когда он возвращается к контроллеру.Как я могу сохранить идентификатор после перехода к методу загрузки, а затем к методу добавления?

Вот соответствующие методы контроллера ...

[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
     }

1 Ответ

0 голосов
/ 15 мая 2018

Вы можете попробовать использовать внутри контроллера

TempData.Peek("Model")

вместо

TempData["Model"]

TempData отмечает данные, связанные с ключом, подлежащим удалению после одного вызова / использования.Используя метод peek, вы можете просматривать значение, связанное с ключом, не удаляя его.Из-за этого поведения, которое удаляется само по себе после однократного использования, поэтому вам нужно либо просмотреть, либо сохранить данные в течение одного использования.

Другим способом будет

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

Более подробно иБолее четкое объяснение: TempData keep () против peek ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...