MVC3 Razor - Как передать данные с контроллера для просмотра - и обратно на контроллер - PullRequest
3 голосов
/ 19 марта 2012

У меня есть представление, где все будет заполнено пользователем - но относится к родительской сущности. Я передаю этот идентификатор моему представлению, используя ViewBag, но я не знаю, как вернуть его в действие post в контроллере. Я пробовал скрытые поля формы, но они не отображаются в сообщении, или я не знаю, как их получить ... Контроллер:

public ActionResult AddCar(int id)
{
ViewBag.Id = id;
return View();
}

Просмотр (пробовал):

    @using (Html.BeginForm("AddReturn", "DealerAdmin", new { id = carId }))
    {
View (tried):
     @Html.Hidden(carId.ToString())

КАК мне получить значение в моем пост-действии в контроллере? Или есть лучший / другой способ приблизиться к этому? БЛАГОДАРЯ

Ответы [ 4 ]

9 голосов
/ 19 марта 2012

Создайте ViewModel для публикации, это будет выглядеть следующим образом:

public class Post
{
   int id {get;set;}
   //other properties
}

и в вашем действии контроллера отправьте объект публикации

public ActionResult AddCar(int id)
{
 Post post = new Post();
 post.Id = id;
return View(post);
}

ваше представление должно использовать класс Post в качествемодель

@model namespace.Post
@using (Html.BeginForm("AddReturn", "DealerAdmin", FormMethod.Post)
    {
      @Html.HiddenFor(model => model.Id)
    }

и действие вашего контроллера, которое ожидает результат, должно иметь объект post в качестве входного параметра

public ActionResult AddReturn(Post post)
{
 //your code
}
2 голосов
/ 19 марта 2012

Скрытое поле должно работать. Проблема в том, что ваш контроллер не принял его.

Вы можете использовать ViewModel для достижения этой цели. Или используйте код ниже в вашем действии:

id = Request.Form["id"]
0 голосов
/ 19 марта 2012

есть какой-то путь1. отправить значение в строке запроса, если есть только одно значение для отправки в контроллер2. если вы хотите собрать много полей в поле зрения, вы можете использовать formcollectionобразец ::

public actionresult method1()
{
 int id = //everything you want
 viewbag.id=id;
 ....
 //and other field to collect
}

в поле зрения

<form method="post" action="method1" enctype="now i dont remeber the value of this option" >

@html.hidden("id")
.....

<input type="submit" value"Send"/>
</form>

[httpPost]
public actionresult method1(fromcollection collection)
{
 int id = collection.get("id");
 ....
 //and other field to collect
}
0 голосов
/ 19 марта 2012

Попробуй так:

@using (Html.BeginForm("AddReturn", "DealerAdmin", new { id = ViewBag.Id }))
{
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...