我在应用程序中填充下拉列表时遇到困难。我需要Client_Name
显示在下拉列表而不是ClientId
。
我收到的错误是在控制器中以绿色突出显示“List”并说:
警告:检测到无法访问的代码。
我没有遇到类似下拉人群的这个问题。
我在控制器中的代码如下:
//
// GET: /Trip/Create
public ActionResult Create()
{
List<Vehicle> VehicleList = new List<Vehicle>();
// the vehicle registrations
var VehicleQuery1 = from a in db.Vehicles
orderby a.Vehicle_Reg
select a;
VehicleList.AddRange(VehicleQuery1);
ViewBag.VehicleId = new SelectList(VehicleList, "VehicleId", "Vehicle_Reg");
ViewBag.TodaysDate = DateTime.Now;
Trip NewTrip = new Trip();
NewTrip.Date_Departed = DateTime.Now;
return View(NewTrip);
// the client names
List<Client> ClientList = new List<Client>();
var ClientQuery1 = from b in db.Clients
orderby b.Client_Name
select b;
ClientList.AddRange(ClientQuery1);
ViewBag.ClientId = new SelectList(ClientList, "ClientId", "Client_Name");
return View();
}
我已经更改了创建视图的更改,代码如下:
<div class="editor-field">
@Html.DropDownList("ClientId", "Please Select");
@Html.ValidationMessageFor(model => model.CleintId)
</div>
答案 0 :(得分:2)
嗯,首先警告不是错误。
回到非常具有描述性的警告。你有一些永远不会执行的代码(即unreachable code)。要检测阻止它执行的内容,请始终查看带下划线的语句之前的语句(语句警告是指,如果您使用的是不强调警告的IDE)。
在这种情况下,您会发现问题是您在没有任何条件的情况下使用return
,这意味着在return
执行后没有任何内容。
谢谢Daniel和Pawel。它现在可以按要求运行。不知道我是怎么错过的。
如果始终在方法结束时保留return
,那么您几乎不会犯这个错误。你可以而且应该保持return
在最后,除非因某种情况需要返回。
答案 1 :(得分:1)
这不是错误,而是建议你应该检查你的代码和 删除(注释掉)无法访问的代码或更改上面的代码 以某种方式使代码可以访问。
...
Trip NewTrip = new Trip();
NewTrip.Date_Departed = DateTime.Now;
return View(NewTrip); // <- your method will always return here, no code below will ever execute
// These code below is unreachable: it will never be executed.
// So the compiler advise (via warning) you either to delete (or comment out) the code below
// or change return View(NewTrip) line
// the client names
List<Client> ClientList = new List<Client>();
var ClientQuery1 = from b in db.Clients
orderby b.Client_Name
select b;
ClientList.AddRange(ClientQuery1);
ViewBag.ClientId = new SelectList(ClientList, "ClientId", "Client_Name");
return View();
}
答案 2 :(得分:0)
你要回来两次了!第一次返回后,将不执行以下代码。编译器警告你。
答案 3 :(得分:0)
你不能将值两次返回到你的行动结果,你的回报必须放在最后。