You should always check the user input, and in this case, make sure that any identifier is transmitted in fact, the user has access. Is it safer? Not really because there is nothing wrong with hidden inputs if you check anyway.
Using tempdata means that you accept parameters from the routes of the (supposedly) HTML form and now TempData. This seems terribly complex, not a real defense inside your controllers.
TempData . , Post TempData, .