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