使用IList下拉需要Guid

时间:2013-02-14 22:04:40

标签: c# asp.net-mvc

我在访问使用Guid参数生成.ToList()

的服务时遇到了一些问题
 public IList<Info> GetBusinessLocations(Guid businessId)
    {
        using (var db = new DealerContext())
        {
            return GetDealerDetails(
                db.Details
                  .Join(db.BusinessLocations,
                  x => x.BusinessId,
                  y => y.BusinessId, (x, y) => x)
                  .Where(d => d.BusinessId == businessId), db)
                  .ToList();
        }
    }

我尝试用guid作为参数编写ActionResult,但我继续得到一个错误,“参数字典包含参数'businessId'的空条目”

 public ActionResult Create(Guid businessId)
    {


        ViewBag.Locations = new SelectList(ServiceBus.GetBusinessLocations(businessId), "BusinessId", "LocationName");

        return View(IdGenerator());
    }


 private static Data.Models.Business IdGenerator()
    {
        var model = new Models.Business
        {
            BusinessId = Guid.NewGuid()
        };
        return (model);
    }

在我看来,我只需要调用dropdownlistfor

@Html.DropDownListFor(m =>m.BusinessId, (IEnumerable<SelectListItem>)ViewBag.Locations,"Select your Businesses Location")

如果有人能提供一些见解我会非常感激。我很难在SO上找到类似的场景。

1 个答案:

答案 0 :(得分:0)

我最终更改了这段代码,所以我用我的修复程序关闭了这个问题。希望这种方法可以帮助别人。

服务查询

public IList<DealerInfo> GetBusinessLocations(Guid? locationId)
         {
        using (var db = new DealerContext())
             {
            var query = db.DealerDetails
                .Join(db.DealerValidations,
                    d=>new {bizId=d.BusinessId,lId=d.LocationId},
                    dv=>new {bizId=dv.BusinessID,lId= dv.LocationID},
                    (d,dv)=>d);

            if (locationId.HasValue)
                query = query.Where(d => d.LocationId == locationId.Value);

            return GetDealerDetails(query)
                .OrderBy(d =>d.DealerName)
                .ToList();
        }
    }

控制器操作

    public ActionResult GetLocations(Guid? id)
    {
        IList<DealerInfo> locations;

        locations = Service.GetBusinessLocations(id);


        ViewData["LocationId"] = new SelectList(locations, "LocationId", "DealerName", "(Select)");

        return PartialView("_DealerDropDown");
    }

部分视图

<div class="editor-field" id="locationdropdown">
    @Html.DropDownList("LocationId", ViewData["LocationId"] as SelectList, "(Select)", new { onchange = "onLocationSelected()", id="querydrop" })

</div>

我知道这对我的特定问题非常具体,但希望有类似情况的人可能会觉得这很有用。