Использование Tempdata в ASP.NET MVC-Лучшая практика
я использую ASP.NET MVC 3 для создания веб-приложения.
то, что я пытаюсь сделать, это передать ценности между двумя контроллерами, хотя есть много способов сделать это, я особенно заинтересован в использовании TempData
для этого.
public ActionResult Action1()
{
string someMessage;
Test obj = SomeOperation();
if(obj.Valid)
{
someMessage = obj.UserName;
}
else
{
someMessage = obj.ModeratorName;
}
TempData["message"] = someMessage;
return RedirectToAction("Index");
}
public ActionResult Index()
{
ViewBag.Message = TempData["message"]
return View();
}
так это использование TempData
здесь правильно ? Я имею в виду, что в соответствии с лучшими практиками программирования это правильный способ использования TempData
?
в каких случаях в реальном времени следует TempData
использоваться ?
Примечание : I прошли по следующим ссылкам
- когда использовать TempData vs Session in ASP.Net MVC
- http://www.gregshackles.com/2010/07/asp-net-mvc-do-you-know-where-your-tempdata-is/
спасибо
3 ответа:
TempData
это ведро, где вы можете сбросить данные, которые необходимы только для следующего запроса. То есть все, что вы помещаете в TempData, отбрасывается после завершения следующего запроса. Это полезно для одноразовых сообщений, таких как ошибки проверки формы. Важно отметить, что это относится к следующему запросу в сеансе, так что запрос может потенциально произойти в другом окне браузера или вкладке.чтобы ответить на ваш конкретный вопрос: нет правильный способ его использования. Это все зависит от удобства использования и удобства. Если это работает, имеет смысл, и другие понимают это относительно легко, это хорошо. В вашем конкретном случае передача параметра таким образом прекрасна, но странно, что вам нужно это сделать (запах кода?). Я бы предпочел сохранить такое значение в ресурсах (если это ресурс) или в базе данных (если это постоянное значение). Из вашего использования это похоже на ресурс, так как вы используете его для заголовка страницы.
Надежда эта помощь.
обратите внимание, что MVC 3 и далее поведение сохраняемости TempData изменилось, теперь значение в TempData сохраняется до тех пор, пока оно не будет прочитано, а не только для следующего запроса.
значение TempData сохраняется до тех пор, пока оно не будет прочитано или пока сеанс тайм-аут. Сохранение TempData таким образом позволяет использовать такие сценарии, как перенаправление, поскольку значения в TempData доступны за пределами a один запрос. https://msdn.microsoft.com/en-in/library/dd394711%28v=vs.100%29.aspx
просто знайте о постоянстве TempData, это немного сложно. Например, если вы даже просто читаете TempData внутри текущего запроса, он будет удален, и, следовательно, у вас его нет для следующего запроса. Вместо этого, вы можете использовать
Peek
метод. Я бы рекомендовал прочитать эту классную статью: