下拉列表-检测到无法访问的代码
本文关键字:访问 代码 检测 下拉列表 | 更新日期: 2023-09-27 18:29:12
我在应用程序中填充下拉列表时遇到困难。我需要Client_Name
出现在下拉列表中,而不是ClientId
。
我收到的错误在控制器中,控制器在"列表"下以绿色下划线,并显示:
警告:检测到无法访问的代码。
我没有经历过类似人口下降的问题。
我在控制器中的代码如下:
//
// 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>
首先,警告不是错误。
回到非常描述性的警告。您有一些永远不会执行的代码(即无法访问的代码)。要检测是什么阻止了它的执行,请始终查看带下划线的语句之前的语句(在使用不带下划线警告的IDE的情况下,语句警告指的是)。
在这种情况下,您将看到问题是您在没有任何条件的情况下使用return
,这意味着return
之后将不会执行任何内容。
谢谢丹尼尔和帕维尔。它现在按要求工作。不知道我怎么会错过的。
如果总是将return
保留在方法的末尾,那么您几乎永远不会犯这个错误。并且您可以并且应该将return
保留在末尾,除非由于某些条件需要返回。
这不是一个错误,而是建议您检查代码并删除(注释掉)无法访问的代码或更改上面的代码以某种方式使代码可访问。
...
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();
}
您返回了两次!在第一次返回之后,将不会执行以下代码。编译器会警告您。
您不能向actionresult返回两次值,您的返回必须放在末尾。