0

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

4 回答 4

2

好吧,首先警告不是错误。

回到非常具有描述性的警告。您有一些永远不会执行的代码(即无法访问的代码)。要检测阻止它执行的原因,请始终查看带下划线的语句之前的语句(语句警告指的是,在您使用没有下划线警告的 IDE 的情况下)。

在这种情况下,您会看到问题是您在return没有任何条件的情况下使用,这意味着之后return将不执行任何操作。

谢谢丹尼尔和帕维尔。它现在按要求工作。不知道我是怎么错过的。

如果你总是坚持return方法的最后,你几乎永远不会犯这个错误。而且你可以而且应该保持return在最后,除非由于某些情况必须返回。

于 2013-08-28T07:49:59.833 回答
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();

}
于 2013-08-28T08:17:34.953 回答
0

你不能两次返回值到你的 actionresult,你的 return 必须放在最后。

于 2013-08-29T06:50:03.590 回答
0

你要回来两次!第一次返回后,将不执行以下代码。编译器会警告您。

于 2013-08-28T07:50:39.180 回答