C# 如何在不加载视图的情况下重新加载/刷新局部视图中的级联下拉列表
我在网上搜索过这个,但找不到合适的答案。 我有一个局部视图,其中有三个不同的下拉列表。我正在利用其中的两种不同功能 更改第一个下拉列表时,其他两个将得到更新 更改第二个下拉列表时,第三个下拉列表将更新 在更改第二个下拉列表之前,一切正常。如果我想再次更改第一个下拉列表,则第三个下拉列表不会加载,也不会返回任何值C# 如何在不加载视图的情况下重新加载/刷新局部视图中的级联下拉列表,c#,jquery,reload,cascadingdropdown,aspnetcore-environment,C#,Jquery,Reload,Cascadingdropdown,Aspnetcore Environment,我在网上搜索过这个,但找不到合适的答案。 我有一个局部视图,其中有三个不同的下拉列表。我正在利用其中的两种不同功能 更改第一个下拉列表时,其他两个将得到更新 更改第二个下拉列表时,第三个下拉列表将更新 在更改第二个下拉列表之前,一切正常。如果我想再次更改第一个下拉列表,则第三个下拉列表不会加载,也不会返回任何值 $("#FoodItemID").change(function () { // var id = $("select#Food
$("#FoodItemID").change(function () { //
var id = $("select#FoodItemID").val();
$.ajax({
url: '/FoodRecipe/GetServingType',
type: "POST",
data: { FoodItemID: $("select#FoodItemID").val() },
success: function (result) {
$("#ServingTypeID").val(result[0]);
$("#ServingSubTypeID").val(result[1]);
}
});
});
$("#ServingTypeID").change(function () {
$.ajax({
url: '/FoodRecipe/GetServing',
type: "POST",
data: { ServingTypeID: $("select#ServingTypeID").val() },
success: function (result) {
var len = result.length;
$("#ServingSubTypeID").empty();
for (var i = 0; i < len; i++) {
var id = result[i]['id'];
var name = result[i]['name'];
$("#ServingSubTypeID").append("<option value='" + id + "'>" + name + "</option>");
$('#ServingSubTypeID').trigger('select:updated'); //this is not working for me
}
}
});
});
这是我的下拉列表代码。
我无法上载整个局部视图,因为加载后会丢失所有值。我知道我遇到的问题与我的下拉列表中的值没有更新有关,因为来自控制器的值发生了更改,所以我更改了第二个下拉列表
所以我认为一个好的选择是以某种方式重新加载第三个下拉列表中的值。
但我不知道该怎么做
我知道这可能是最容易做到的事,但我想不出来。在花了17个小时的时间之后,我必须知道如何做到这一点。以下是我为那些像我一样困惑的未来读者所做的 我回到我的控制器,加载了所有项目以及与我想要传递和获取项目的特定id相关的特定项目。数据绑定了所有项目加载器,是的,它工作了。以上所有脚本都保持不变 这是我在控制器中所做的更改 以前的控制器代码 新代码
[HttpPost] //Getting Sub Type and Serving Type on Food Item ID
public async Task<IActionResult> GetServingType(int? FoodItemID)
{
vmControllerMessage.APIExecutionBaseURL = APIUrls.APIApplicationPath;
vmControllerMessage.APIExecutionURL = "APIFoodRecipe/GetServingTypes";
vmControllerMessage.VMControllerObject = FoodItemID;
HttpResponseMessage httpResponseMessage = PutJsonModelAPIWithNoRedirect();
if (httpResponseMessage.StatusCode == System.Net.HttpStatusCode.OK)
{
int[] i = JsonConvert.DeserializeObject<int[]>(vmServiceMessage.VMObject.ToString());
return Json(i);
}
else
{
return Json(vmServiceMessage);
}
}
[HttpPost] //Getting Sub Type and Serving Type on Food Item ID
public async Task<IActionResult> GetServingType(int FoodItemID)
{
VMFoodRecipeDetail model = new VMFoodRecipeDetail();
model.FoodItemID = FoodItemID;
vmControllerMessage.APIExecutionBaseURL = APIUrls.APIApplicationPath;
vmControllerMessage.APIExecutionURL = "APIFoodRecipe/GetServingTypes";
vmControllerMessage.VMControllerObject = model;
HttpResponseMessage httpResponseMessage = PutJsonModelAPIWithNoRedirect();
if (httpResponseMessage.StatusCode == System.Net.HttpStatusCode.OK)
{
VMFoodRecipeDetail obj = JsonConvert.DeserializeObject<VMFoodRecipeDetail>(vmServiceMessage.VMObject.ToString());
ViewBag.ServingTypeID = new SelectList(obj.ServingTypes, "ID", "Name",obj.ServingTypeID);
ViewBag.ServingSubTypeID = new SelectList(obj.ServingSubTypes, "ID", "Name", obj.ServingSubTypeID);
int[] ids = { obj.ServingTypeID, obj.ServingSubTypeID };
return Json(ids);
}
else
{
return Json(vmServiceMessage);
}
}