如何从表单发送数据,两个字段相同:站名,但它们具有不同的值。如何通过post方法将它们发送给控制器。 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);
}
答案 0 :(得分: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)
{
...
}
答案 1 :(得分:0)
扩展tvanfosson的答案,我总结一下,我会尝试将您的数据模型与您的视图数据分离。这通常通过使用MVVMC aproach来完成,其中VM代表视图模型。在您的情况下,您似乎直接将数据模型传递给视图,这有时不是推荐的方法。
因此,将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);
}