2016-08-10 2 views
0

Итак, у меня есть контроллер, и я могу понять, как передать параметр моему методу ActionResult.Передача значения из контроллера для просмотра ViewBag

routes.MapRoute(
      name: "MyRoute", 
      url: "{controller}/{name}/{id}", 
      defaults: new { controller = "Project", name = "Search", id = UrlParameter.Optional } 
     ); 

Это мой маршрут. Теперь в моем контроллере я создал метод

[HttpGet] 
public ActionResult Search() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult Search(int Id) 
{ 
    ViewBag.iD = Id; 
    return View(); 
} 

И на мой взгляд

<body> 
    <div> 
     ASDF + @ViewBag.iD 
    </div> 
</body> 

Как я могу передать значение моего параметра Ид от поиска действий? Кажется, что я называю
http://localhost:52992/Project/Search/id=2 или http://localhost:52992/Project/Search/1

Оба метода идут в метод поиска(), никто не идет к поиску (интермедиат Ид).

Что мне недостает?

+0

A ссылка делает GET, а не POST, поэтому ваш метод GET должен быть 'public ActionResult Search (int ID)' (и удалять метод POST) –

+0

Теперь я чувствую себя полным идиотом. Спасибо! Вы можете опубликовать его в качестве ответа, чтобы я мог его принять. – CiucaS

ответ

1

Ссылка на ваш взгляд (или форма с FormMethod.Get или ввода URL в адресной строке) делает GET вызов, а не POST, поэтому ваш метод должен быть

[HttpGet] 
public ActionResult Search(int ID) 
{ 
    // do something based on the value of ID 
    ViewBag.iD = ID; 
    return View(); 
} 

и удалить метод [HttpPost] ,

0

Вам необходимо передать значение из метода поиска Search12. если вы переходите от него, то только значение будет показано в окне

[HttpGet] 
public ActionResult Search() 
{ 
    ViewBag.iD = your Id value here; 
    return View(); 
} 

на intial нагрузки метод получения будет называться, по представлению только «пост» метод будет звонить.
надеюсь, что это поможет.

0

На ваш взгляд

<a href='@Url.Action("ActionName", "ControllerName", new { id= 10})'>...</a> 

ИЛИ

@{ 
int id = 10 
} 
    <a href="/ControllerName/ActionName/@id"> ... </a> 

на вашем действии

Public ActionResult Search(int id) 
{ 
Viewbag.Id = id; 
return view(); 
} 

Действие по умолчанию на [HttpGet] вы не должны упоминать его

Смежные вопросы