下拉列表-检测到无法访问的代码

本文关键字:访问 代码 检测 下拉列表 | 更新日期: 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返回两次值,您的返回必须放在末尾。