如何使用具有多个值的@ Html.DropDownList

时间:2017-06-10 11:32:16

标签: jquery asp.net-mvc

我有一个表GROUP_CONCAT,其中包含PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?book (group_concat(DISTINCT ?author; separator = ", ") as ?authors) (group_concat(DISTINCT ?publisher; separator = ", ") as ?publishers) (sample(?pages) as ?numPages) (sample(?isbn_tmp) as ?isbn) WHERE { ?book a dbo:Book . ?book dbo:author ?author . OPTIONAL { ?book dbo:numberOfPages ?pages } OPTIONAL { ?book dbo:isbn ?isbn_tmp } OPTIONAL { ?book dbo:publisher ?publisher } # get the English title ?book rdfs:label ?name. FILTER(LANGMATCHES(LANG(?name), 'en')) # get an English description, but not the text ?book rdfs:comment ?text . FILTER(LANGMATCHES(LANG(?text), 'en')) # filter for books whose title contains "java" ?name bif:contains '"java"' } GROUP BY ?book 列,MedicineID

现在我用表药填充了这个MedicineName。我希望在调用中包含值price@Html.DropDownListID,或者在jquery中使用它。

目前我只能获得MedicineName

我的控制器:

price

我的观点:

MedicineName

脚本:

 public ActionResult Create()
    {
        ViewBag.ClientID = new SelectList(db.Clients, "ClientID", "Surname");
        ViewBag.MedicineID = new SelectList(db.Medicines, "MedicineID", "MedicineName");
        return View();
    }

3 个答案:

答案 0 :(得分:2)

尝试从控制器操作方法发送下拉列表中的格式化数据。您可以使用以下内容:

    public ActionResult Create()
    {
            ViewBag.ClientID = new SelectList(db.Clients, "ClientID", "Surname");

           //modified code
            var medlist = db.Medicines.AsEnumrable().Select(x => new {Id = x.MedicineID, MedName = (x.Id + " "+ x.MedicineName +" "+ x.Price).ToString()});
            ViewBag.MedicineID = new SelectList(medlist, "ID", "MedName");
            return View();
        }

现在,您可以在下拉菜单中查看药物的ID,名称和价格。您可以根据需要格式化下拉列表。 您可以通过放置适当的字符串函数来提取脚本中的数据。

答案 1 :(得分:1)

您无法使用@Html.DropDownList,它只允许2个数据值:id和text。

相反,您可以使用@Html.NameFor@Html.IdFor来构建自己的下拉菜单:

<select name="@Html.NameFor(Function(model) model.CityId)"
        id="@Html.IdFor(Function(model) model.CityId)">
    @For Each medicine In Model.Medicines
        @<option value="@medicine.MedicineId"
                 data-price="@medicine.price">
            @medicine.MedicineName
        </option>
    Next
</select>

答案 2 :(得分:0)

您无法在选择列表的每一行中存储3个值。它只有Id和Text。

您可以做的是onchange调用webapi并使用从选择列表中获取的ID来请求其他数据。