Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在MVC4中实现此视图的顺序或流程是什么_Asp.net Mvc_Jquery_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 在MVC4中实现此视图的顺序或流程是什么

Asp.net mvc 在MVC4中实现此视图的顺序或流程是什么,asp.net-mvc,jquery,asp.net-mvc-4,Asp.net Mvc,Jquery,Asp.net Mvc 4,我还在学习MVC4 想象一下下面的场景:我有三个下拉列表和一个大div作为内容。我不知道如何处理按需装货 流程很简单,当页面加载时,在第一个dropdownlist中显示数据。当这个有值时,第二个应该按需加载信息(使用从ddl1中选择的值),依此类推,直到更改ddl3上的值并显示数据 在此之前,我已检测到两个局部视图。我不确定是否应该创建5,因为每个ddl必须在一个局部视图中 另一件事,您建议如何维护SelectList,我应该使用ViewBag还是在viewModel中维护每个ddl的集合

我还在学习MVC4

想象一下下面的场景:我有三个下拉列表和一个大div作为内容。我不知道如何处理按需装货

流程很简单,当页面加载时,在第一个dropdownlist中显示数据。当这个有值时,第二个应该按需加载信息(使用从ddl1中选择的值),依此类推,直到更改ddl3上的值并显示数据

在此之前,我已检测到两个局部视图。我不确定是否应该创建5,因为每个ddl必须在一个局部视图中

另一件事,您建议如何维护
SelectList
,我应该使用
ViewBag
还是在viewModel中维护每个ddl的集合


我只是想知道你是否能解释这个场景。我的意思是,给我一个想法,我该如何开始这样做?事实上,我忘了提到这个疑问,但我不知道是否必须使用AJAX。

几周前,我陷入了同样的困境:-

让您的MVC调用如下所示:-

    private void LoadDropdown1()
    {
        var _data;//Your logic to get the data
        ViewData["Dropdown1"] = new SelectList(_data, "Dropdown1Id", "Name");
    }
    private void LoadDropdown2(int dropdownParameterId)
    {
        var _data = "";//Use your ID to get the data
        ViewData["Dropdown2"] = new SelectList(_data, "Dropdown2Id", "Name");
    }
您的.cshtml应该是:-

@using (Html.BeginForm())
{
    <div>
        <table>
            <tr>
                <td><b>Select a District:</b></td>


                <td>@Html.DropDownListFor(m => m.Dropdown1Id, ViewData["Dropdown1"] as IEnumerable<SelectListItem>, "Select One", new {@id="Dropdown1Id"})</td>
            </tr>
            <tr>
                <td><b>Select:</b></td>

                <td>@Html.DropDownListFor(m => m.Dropdown2Id, ViewData["Dropdown2"] as IEnumerable<SelectListItem>, "Select One")</td>
            </tr>
        </table>
    </div>
}
@使用(Html.BeginForm())
{
选择一个地区:
@Html.DropDownListFor(m=>m.Dropdown1Id,ViewData[“Dropdown1”]作为IEnumerable,“选择一个”,新建{@id=“Dropdown1Id”})
选择:
@Html.DropDownListFor(m=>m.Dropdown2Id,ViewData[“Dropdown2”]作为IEnumerable,“选择一个”)
}
现在,最好使用AJAX调用将数据加载到下拉列表中:-

$(function () {
    $('select#Dropdown1').change(function () {
        var id = $(this).val();


        $.ajax({
            url: 'Bla Bla',
            type: 'POST',
            data: JSON.stringify({ id: id }),
            dataType: 'json',
            contentType: 'application/json',
            success: function (data) {
                $.each(data, function (key, data) {
                    $('select#Dropdown1').append('<option value="0">Select One</option>');
                    // loop through the LoadDropdown1 and fill the dropdown
                    $.each(data, function (index, item) {
                        $('select#Dropdown1').append(
                            '<option value="' + item.Id + '">'
                            + item.Name +
                            '</option>');
                    });
                });
            }
        });
    });
});
$(函数(){
$('select#Dropdown1')。更改(函数(){
var id=$(this.val();
$.ajax({
url:“Bla Bla”,
键入:“POST”,
数据:JSON.stringify({id:id}),
数据类型:“json”,
contentType:'应用程序/json',
成功:功能(数据){
$。每个(数据、功能(键、数据){
$('select#Dropdown1')。追加('select One');
//循环加载下拉列表1并填充下拉列表
$。每个(数据、功能(索引、项目){
$('select#Dropdown1')。追加(
''
+项目名称+
'');
});
});
}
});
});
});
我想说的是。。以您喜欢的方式加载第一个下拉列表。然后,在第一个下拉列表的更改事件中,您可以触发一个ajax调用来获取第二个下拉列表的数据。。。。同样地

参考:-

读取第一个值,然后通过ajax调用并将其传递给子操作,然后重复相同的操作。