C# 显示从控制器方法viewbag到视图中列表的列表
我的控制器中有以下GET方法:C# 显示从控制器方法viewbag到视图中列表的列表,c#,asp.net,asp.net-mvc,model-view-controller,C#,Asp.net,Asp.net Mvc,Model View Controller,我的控制器中有以下GET方法: public ActionResult GetLinesByDestination() { destinationService = new DestinationService(); ViewBag.Destination_id = new SelectList(destinationService.All(), "Destination_id", "city"); lineService = new LineService();
public ActionResult GetLinesByDestination()
{
destinationService = new DestinationService();
ViewBag.Destination_id = new SelectList(destinationService.All(), "Destination_id", "city");
lineService = new LineService();
ViewBag.Lines = new SelectList(lineService.All(), "line_id", "arrival");
return View();
}
张贴方法:
[HttpPost]
public ActionResult GetLinesByDestination(int? Destination_id)
{
destinationService = new DestinationService();
ViewBag.Destination_id = new SelectList(destinationService.All(), "Destination_id", "city", Destination_id);
lineService = new LineService();
ViewBag.Lines = new SelectList(lineService.GetLinesByDestination(Convert.ToInt16(Destination_id)), "line_id", "arrival").ToList();
return View();
}
查看代码:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.Label("Destinations", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("Destination_id", null, "- Select a destination you want to depart from -", htmlAttributes: new { @class = "form -control" })
@Html.ValidationMessage("Destination_id", "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.Label("Lines", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("Lines", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessage("Lines", "", new { @class = "text-danger" })
</div>
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true,“,new{@class=“text danger”})
@Label(“Destinations”,htmlAttributes:new{@class=“controllabel col-md-2”})
@DropDownList(“Destination_id”,null,“-选择您想要离开的目的地-”,htmlAttributes:new{@class=“form-control”})
@ValidationMessage(“目的地id”,new{@class=“text danger”})
@Label(“行”,htmlAttributes:new{@class=“control Label col-md-2”})
@DropDownList(“line”,null,htmlAttributes:new{@class=“form control”})
@ValidationMessage(“行”,“新{@class=“text danger”})
执行GET时所做的一切就是检索数据库中所有目的地和所有行的列表。但是,当单击“提交”并执行POST方法时,只应显示用户选择的目的地偏离的行。这是完全有效的
现在我的实际问题是:
Destination_id ViewBag应该在视图中保持为下拉列表,因为用户必须从这里选择一个选项。但是,我希望这些行显示为列表(如
SelectList
时,通过引用Text
和Value
属性设置,您应该能够按照预期迭代查看您的ViewBag集合:
@if (ViewBag.Lines != null) {
<ul>
@foreach (var line in ViewBag.Lines){
<li>
@line.Text - @line.Value
</li>
}
</ul>
}
这将假定您希望回发一个表示“值”的值数组同样,如果您只想包含一个选项,可以用单选按钮替换这些选项,并确保name
属性正确绑定到destination\u id
属性:
<ul>
@foreach (var line in ViewBag.Lines){
<li>
@line.Text - @line.Value
<input type='radio' name='Destination_id' value='@line.Value' / >
</li>
}
</ul>
@foreach(ViewBag.Lines中的var行){
-
@line.Text-@line.Value
}
遍历您的选择列表
当绑定到SelectList
时,通过引用Text
和Value
属性设置,您应该能够按照预期迭代查看您的ViewBag集合:
@if (ViewBag.Lines != null) {
<ul>
@foreach (var line in ViewBag.Lines){
<li>
@line.Text - @line.Value
</li>
}
</ul>
}
这将假定您希望回发一个表示“值”的值数组同样,如果您只想包含一个选项,可以用单选按钮替换这些选项,并确保name
属性正确绑定到destination\u id
属性:
<ul>
@foreach (var line in ViewBag.Lines){
<li>
@line.Text - @line.Value
<input type='radio' name='Destination_id' value='@line.Value' / >
</li>
}
</ul>
@foreach(ViewBag.Lines中的var行){
-
@line.Text-@line.Value
}
谢谢,你帮了我很大的忙!我可以再问你一个问题吗?我现在确实得到了一个列表,如图所示:我知道我在我的viewbag中包括了Line_id和arrival,在我的数据库中,这两个都是整数,所以很有意义。但是我如何检索这些字符串的值,就像我的目的地城市一样_id viewbag(city显然是一个字符串)?如果能够进行转换/查找,这将是一个很好的额外功能?您可以使用LINQ来处理这个问题(例如,@(viewbag.Destinations.FirstOrDefault(d=>d.Value==42)?.Text
或类似的内容,但否则事情会有点糟糕(因为这不属于您的视图)这可能是你想考虑使用适当的VIEW模型,而不是把它全部存储在一个单独的模型中,而不是一个VIEWBACK。如果你这样做了,你可以把这个内容存储在一个字典里,这样你就可以很容易地根据一个值/索引来访问你的任何属性。e也很有趣。我稍后会尝试。我还考虑了另一个解决方案:我有一个DAO和服务层。我不能在这些层中使用LINQ并在控制器中调用该方法,类似这样:return db.Line where(l=>l.Line_id==Line_id)
然后以某种方式将整行放在列表中?只是想了解一下,我知道这不是正确的语法。谢谢,你帮了我很大的忙!我可以再问你一个问题吗,我现在确实得到了一个列表,如图所示:我知道我在我的viewbag中包括了行id和到达,在我的数据库中,这两个都是整数l、 所以这是有意义的。但是,我如何检索这些字符串的值,就像我的Destination_id viewbag中的city(city显然是一个字符串)?如果能够进行转换/查找,那将是一个很好的额外功能?您可以使用LINQ来处理这个问题(例如@(viewbag.Destinations.FirstOrDefault)(d=>d.value==42)?文本
或类似的内容,但否则事情会有点糟糕(因为这不属于您的观点)这可能是你想考虑使用适当的VIEW模型,而不是把它全部存储在一个单独的模型中,而不是一个VIEWBACK。如果你这样做了,你可以把这个内容存储在一个字典里,这样你就可以很容易地根据一个值/索引来访问你的任何属性。e也很有趣。我稍后会尝试。我还考虑了另一个解决方案:我有一个DAO和服务层。我不能在这些层中使用LINQ并在控制器中调用该方法,类似这样:return db.Line where(l=>l.Line_id==Line_id)
然后以某种方式将整行内容放在列表中?只是想了解一下,我知道这不是正确的语法。