2011-12-04 25 views
1

如何從窗體發送我的數據,兩個字段是相同的:站名稱,但它們具有不同的值。如何通過郵政方式發送給控制器。 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); 
     } 

回答

3

我會處理這個問題的方法是修改我的模型,分別涵蓋在現有的投入。這樣每個人都可以在行動中相應地加以約束。

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

開始和結束都不錯,但在數據庫,這是沒有什麼區別!結束或開始,只有名稱,所以必須是 – DPS

+0

@DPS我假設您使用特定於視圖的模型並將其屬性映射到您的控制器中的實體模型(DB)。 – tvanfosson

+0

我發現我需要:

  • Из<%= Html.TextBox( 「A1」)%>
  • В<%= Html.TextBox( 「B1」)%>
  • DPS

    0

    上tvanfosson的答案,擴大幾乎總結起來,我會嘗試從視圖數據分離你的數據模型。這通常是通過使用VM代表視圖模型的MVVMC aproach完成的。在你的情況下,你似乎直接將數據模型傳遞給視圖,這有時不是推薦的方法。

    因此,將tvanfosson的RailwayRoute改爲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); 
    

    }

    相關問題