Как скрыть ViewBag в бритве asp.net MVC3 View - PullRequest
0 голосов
/ 23 декабря 2011

Я рендеринг нового представления из некоторого представления (скажем, mainView) с помощью Html.ActionLink("","",new{id=packageID})
и действие моего контроллера (ActionLink передает управление) выглядит
public ActionResult editChecks(int packageID) {return View();}
Теперь в Rendered View ("editChecks") я хочу скрыть packageID, чтобы я мог использовать его (передавая его другому действию контроллера) для другого действия любым способом

, т.е. используя форму внутри View ("editChecks"), которая передает данные какому-либо действию, скажем (action2)


В настоящее время я использую это в моем представлении ("editChecks")
и string pid = Request.Form["packageID"]; в моем действии контроллера (нужен packageID), это прекрасно работает в долгосрочной перспективе ??? Или есть альтернатива, на которую я должен пойти ???

1 Ответ

2 голосов
/ 23 декабря 2011

Вы можете объявить любые ожидаемые параметры в методе. Вы также можете объявить значение по умолчанию, если оно не указано String packageID = "0"

РЕДАКТИРОВАТЬ: ваш вопрос сбивает с толку. Если вы хотите получить доступ к нему в представлении, используйте viewbag.

public ActionResult action2(Int32 packageID) {

  // can use packageID here

 // Or make it accessable on the view
 ViewBag.PackageID = packageID;
  return View();
}

В представлении вы можете получить доступ к этому, набрав

@ViewBag.PackageID

Хотя я спрашиваю, почему в некоторых случаях ваш packageID равен String. Разве вы не должны использовать Int32?

РЕДАКТИРОВАТЬ: Продолжая ваши комментарии,

@Html.Hidden("PackageID", (Int32)@ViewBag.PackageID)

Будет иметь атрибут на странице, скрытый. И будет передано любому вызываемому представителю (при условии, что в форме) как имя "PackageID"

...