加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 添加属性以选择列表选项

发布时间:2020-12-15 22:59:52 所属栏目:asp.Net 来源:网络整理
导读:我在Razor视图中有一个下拉列表中的项目列表.在数据库中,每个项目都具有与之相关联的3个值 – 数据库标识,短名称(用于显示)和长名称(用于传递给服务).下拉列表必须显示短名称,所以我将数据库id作为文本的缩写名称填入下拉列表. 然而,当用户选择一个项目时,我
我在Razor视图中有一个下拉列表中的项目列表.在数据库中,每个项目都具有与之相关联的3个值 – 数据库标识,短名称(用于显示)和长名称(用于传递给服务).下拉列表必须显示短名称,所以我将数据库id作为文本的缩写名称填入下拉列表.

然而,当用户选择一个项目时,我需要使用jQuery将长名称作为查询参数传递给搜索服务,例如当选择Cortina时,需要将“Ford Cortina 1979 Blue”传递给该服务.我的第一个想法是将长名称存储为数据破折号属性,但我想知道是否有更好的方法.所以

>如何在下拉列表中存储所有3个值?
>如果我使用数据破折号属性,如何将所有LONG_NAME值整合到Html.DropDownList中或以某种方式将它们添加到下拉列表中?

DB:

CARID SHORT_NAME LONG_NAME
1     Viper     Dodge Viper 1982
2     Boxster   Porsche Boxster 2009 Black
3     Cortina   Ford Cortina 1979 Blue

控制器助手创建下拉列表:

public static IEnumerable<SelectListItem> GetSelectList(this IEFRepository repository,string typeName)
{
    var vehicle = repository.TypeTypes.FirstOrDefault(t => t.Name.ToUpper() == typeName);
    if (vehicle != null)
    {
        var carList = vehicle.SubTypes.ToList().OrderBy(s => s.Name);
        var selectList = new SelectList(subTypeList,"SubTypeID","Name");

        return selectList;
    }
}

这是我用来创建下拉列表的代码:

<div class="editor-field">
    @Html.DropDownListFor(model => model.CarID,new SelectList(ViewBag.Cars,"Value","Text","1"))
    @Html.ValidationMessageFor(model => model.CarShortName)
</div>

以下是输出:

<select id="CarID" name="CarID" data-val="true" data-val-number="The field CarID must be a number." data-val-required="The CarID field is required.">
    <option value="2">Boxster</option>
    <option value="3">Cortina</option>
    <option selected="selected" value="1">Viper</option>
</select>

解决方法

每个人都忘记了“经典”的方式来解决这些问题:使用foreach循环,并实际写入输入的html.只有不利的是,您必须添加自动属性的东西(如验证等),这取决于您的目的可能不是一件大事.

就像是:

<select> // add other attributes as expected
@foreach(var type in Model.MyFancyTypes) {
<option value="@type.SubTypeID" data-description="@type.Description" 
    @if(ViewBag.TypeSelected == type.SubTypeID) {
        selected="selected"
    }>@type.Name</option>
}
</select>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读