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

时间:2013-08-28 07:34:29

标签: c# asp.net-mvc

我在应用程序中填充下拉列表时遇到困难。我需要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>

4 个答案:

答案 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)

你不能将值两次返回到你的行动结果,你的回报必须放在最后。