Как опубликовать два экземпляра одного свойства из представления в действии? - PullRequest
1 голос
/ 04 декабря 2011

Как я могу отправить свои данные из формы, два поля одинаковы: название станции, но они имеют разные значения. Как отправить их по почте методом к контроллеру. Asp.net mvc2

вот что я пытаюсь:

 <% using (Html.BeginForm("ViewRes", "Shedule"))
       {%>
    <%= Html.ValidationSummary(true) %>
    <fieldset>
        <legend>Поиск по расписанию:</legend>
        <ul>
        <li>Из<%= Html.EditorFor(model => model.StationName) %></li>
        <li>В<%= Html.EditorFor(model1 => model1.StationName) %></li>
        <li>Дата отправления</li>
        </ul>
        <p>
            <input type="submit" value="OK" />
        </p>
    </fieldset>
    <% } %>

и такой контроллер:

 [HttpPost]
        public ActionResult ViewRes(string a1, string b1)
        {

            DateTime dtm = Convert.ToDateTime("30.11.2011 0:00:00");




            var res = (from d in db.RouteDetail
                       from m in db.RouteDetail

                       lalala
                       where (d.Station == a1
                       &&
                       m.Station == b1)
                     lalalal
                       }).ToList();

            return View(res);
        }

Ответы [ 2 ]

3 голосов
/ 04 декабря 2011

Способ, которым я хотел бы подойти к этому, состоит в том, чтобы реорганизовать мою модель, чтобы охватить оба ваших существующих входа по отдельности.Таким образом, каждый может быть связан соответствующим образом в действии.

public class RailwayRoute
{
     public string StartStation { get; set; }
     public string EndStation { get; set; }
}

Просмотр

<% using (Html.BeginForm("ViewRes", "Shedule"))
   {%>
<%= Html.ValidationSummary(true) %>
<fieldset>
    <legend>Поиск по расписанию:</legend>
    <ul>
    <li>Из<%= Html.EditorFor(model => model.StartStation) %></li>
    <li>В<%= Html.EditorFor(model => model.EndStation) %></li>
    <li>Дата отправления</li>
    </ul>
    <p>
        <input type="submit" value="OK" />
    </p>
</fieldset>
<% } %>

Контроллер / Действие

[HttpPost]
public ActionResult ViewRes(string startStation, string endStation)
{
     ...
}
0 голосов
/ 04 декабря 2011

В продолжение ответа tvanfosson, который в значительной степени подводит итог, я бы попытался отделить вашу модель данных от данных вашего представления. Это часто делается с помощью подхода MVVMC, где VM обозначает модель представления. В вашем случае вы, похоже, передаете модель данных непосредственно в представление, что иногда не рекомендуется.

Таким образом, изменяя RailwayRoute tvanfosson на объект viewModel, я бы обеспечил, чтобы действие контроллера отображало данные соответствующим образом. Что-то вроде

[HttpPost]
public ActionResult ViewRes(RailwayRouteViewModel viewModel)
{

   DateTime dtm = Convert.ToDateTime("30.11.2011 0:00:00");


   var res = (from d in db.RouteDetail
              from m in db.RouteDetail
              lalala
              where (d.Station == viewModel.StartStation
                     &&
                     m.Station == viewModel.EndStation)
              lalalal
              select new RailywayRouteViewModel()
              {
                StartStation = d.Station,
                EndStation = m.Station
              }
          }).ToList();

   return View(res);

}

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