Как передать обратно привязанную модель из представления в (не httppost) метод контроллера - PullRequest
0 голосов
/ 28 марта 2012

Как я могу передать (привязанную) модель из представления в метод контроллера, который не является [httppost]?

Вид:

   @Html.EditorFor(model => model.Name)            
   @Html.DisplayFor(model => model.Model)   

   // Table displays more properties of model

   <input type="button" title="GetStuff" value="Get Stuff" onclick="location.href='@Url.Action("GetStuff")'" />

Метод контроллера:

  public ActionResult GetStuff(ViewModel Model /* Realize this is non-httppost but...how can I get the model back with this type of scenario */)
  {
    // Get the name from per the model of the main view if the user changed it
    string theName = Model.Name;

    Model2 m2 = new Model2(){name = theName};
    return ("someView", Model2);
  }

Ответы [ 2 ]

2 голосов
/ 28 марта 2012

Вместо того, чтобы писать собственные строки запроса, просто оберните материал EditorFor с помощью оператора Html.BeginForm (), удалите Javascript из вашей кнопки и измените кнопку на тип отправки.

    @using (Html.BeginForm("GetStuff", "Controller", FormMethod.Get)
    {
       @Html.EditorFor(model => model.Name)            
       @Html.DisplayFor(model => model.Model)   

   // Table displays more properties of model

       <input type="submit" title="GetStuff" value="Get Stuff"/>
    }

FormMethod.Get отправит запрос строки запроса элементов формы в действие / контроллер, определенный в определении Html.BeginForm.

2 голосов
/ 28 марта 2012

Поскольку способ передачи данных в запросах GET осуществляется через строку запроса, вам необходимо поместить все эти данные в строку запроса. Привязка моделей может работать, по крайней мере, для простых моделей, но вам нужно будет подробно включить все эти данные в действие. Например:

@Url.Action("GetStuff", new { Name = Model.Name, Model = Model.Model })

Но если какие-либо из этих данных являются сложными, вам придется самим указывать каждое субпредложение ... Возможно, вам следует просто опубликовать? :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...