1

在 MVC4 中是否有任何可用于下拉列表的事件,如 onChange 等?我们是否必须使用 Javascript/jQuery 来进行 DropwowlistSelectedItemChanged 等操作?还是只有使用 Razor 或 MVC4 功能的方法?

另一方面,您能否给我一些示例,如何根据下拉列表选定值检索数据并使用此数据更改标签的文本?例如,当从下拉列表中选择一个城市时,我想通过使用选定的城市 id 从数据库中获取地址数据,然后在标签上显示检索到的地址。如果您就上述问题向我澄清并给我一个例子来实现这一点,我将不胜感激。

控制器:

private void PopulateMeetingsDropDownList(object selectedMeetings = null)
    {
        var meetingsQuery = repository.Meetings
            .Join(repository.Cities, m => m.MeetingCityId, c => c.CityID,
                (m, c) => new
                {
                    CityID = c.CityID,
                    CityName = c.CityName,
                    MeetingDate = m.MeetingStartDate
                }
            )
            .OrderBy(x => x.CityID)
            .AsEnumerable()
            .Select(
                i => new
                {
                    CityID = i.CityID,
                    DisplayValue = string.Format(
                        "{0} ({1:dd MMMM yyyy})",
                        i.CityName, i.MeetingDate)
                }
            ).ToList();
        ViewData["MeetingId"] = new SelectList(meetingsQuery, "CityID", "DisplayValue", selectedMeetings);
    }

看法:

<label>Meeting</label>
@Html.DropDownListFor(m => m.MeetingId, ViewData["MeetingId"] as SelectList,"---- Select ----", new { name = "meetingId", id = "meetingId"}) 
4

5 回答 5

5

尝试这个,

@Html.DropDownListFor(model => model.MyProp, (SelectList)ViewBag.ListItems, new { @id = "MyId", onchange = "MyFunction()" })

<script type="text/javascript">
    function MyFunction() {
        alert('Changed');
        $('#YourLabelId').val('ReplaceWithThisValue');
    }
</script>

或这个

@Html.DropDownListFor(model => model.MyProp, (SelectList)ViewBag.ListItems, new { @id = "MyId"})

<script type="text/javascript">
   $('#MyId').change(function(){
        alert('Changed');
        $('#YourLabelId').val('ReplaceWithThisValue');
    });
</script>
于 2013-10-18T13:40:26.760 回答
2

你必须在这里使用 jquery 你有一个简单的例子

<select id="myCombo" name="myCombo">
   <option>a</option>
   <option>b</option>
   <option>c</option>
</select>
<script type="text/javascript">
 $('#myCombo').change(function(){
   //Here goes your code 
 });
</script>
于 2013-10-18T13:37:34.543 回答
0

您必须在声明类属性的新 {} 端使用 onchange 属性,如此示例

@Html.DropDownListFor(model => model.IpoId, new SelectList(Model.IpoList, "Value", "Text", Model.IpoId), "--انتخاب کنید--", new {@class = "chzn-select chzn-rtl", @onchange = "IpoFilterOnChange();" })
于 2017-07-09T09:51:58.823 回答
0

您必须在声明类属性的新 {} 端使用 onchange 属性,如此示例

[@Html.DropDownListFor(model => model.IpoId, new SelectList(Model.IpoList, "Value", "Text", Model.IpoId), "--انتخاب کنید--", new {@class = "chzn-选择 chzn-rtl", @onchange = "IpoFilterOnChange();" })]

于 2017-07-09T09:47:10.043 回答
0

您必须在声明类属性的新 {} 端使用 onchange 属性,如此示例

@Html.DropDownListFor(model => model.IpoId, new SelectList(Model.IpoList, "Value", "Text", Model.IpoId), "--انتخاب کنید--", new {@class = "chzn-select chzn-rtl", @onchange = "IpoFilterOnChange();" })]

于 2017-07-09T11:15:46.757 回答