提问人:tryingtocode 提问时间:5/9/2023 最后编辑:Md Farid Uddin Kirontryingtocode 更新时间:5/12/2023 访问量:59
在下拉列表所选索引更改 Razor MVC 时获取 SelectedItem 值
Get SelectedItem Value while Dropdownlist Selected Index Change Razor MVC
问:
我有一个 Tblproduct,必须将其绑定到下面的下拉列表中:class
List of GetTypes()
public partial class Tblproduct: AuditableEntity
{
[DisplayName("Product Type")]
public int? ProductTypeId { get; set; }
public static List<SelectListItem> GetTypes()
{
List<SelectListItem> datas = new List<SelectListItem>();
datas.Insert(0, new SelectListItem() { Value="",Text=""});
datas.Insert(1, new SelectListItem() { Value= InventoryCatalogueID.ToString(), Text="Inventory Catalogue"});
datas.Insert(1, new SelectListItem() { Value= ServiceCatalogueID.ToString(), Text="Service Catalogue"});
datas.Insert(1, new SelectListItem() { Value= ServiceCatalogueID.ToString(), Text= "Sub-Assembly" });
datas.Insert(1, new SelectListItem() { Value= ServiceCatalogueID.ToString(), Text= "Raw Material" });
datas.Insert(1, new SelectListItem() { Value= ServiceCatalogueID.ToString(), Text= "Finish Good" });
datas.Insert(1, new SelectListItem() { Value= ServiceCatalogueID.ToString(), Text= "Service Catalogue" });
return datas;
}
}
我有一个:ViewModel
public ProductVM(Tblproduct _model = null, bool isreadonly = false):base(_model, isreadonly,"ControllerName")
{
types = Tblproduct.GetTypes();
}
public List<SelectListItem> types { get; set; }
我还成功地将列表绑定到以下下拉列表中:Tblproduct GetTypes
View
<select2 asp-for="model.ProductTypeId" asp-items="@Model.types"/>
我现在正在努力的是,我需要根据选定的类型添加一些输入。
我是否需要使用 Helper 来获取所选值?auto-post-back
但是如果我使用下拉列表将始终选择第一个值......auto-post-back
这是我的想象:
@if(Model.types = 'Finish Good'){
//do something to add new input or select
}
但是如何获取Dropdownlist SelectedIndex或SelectedText更改?
答:
0赞
Md Farid Uddin Kiron
5/12/2023
#1
如何获取下拉列表SelectedIndex或SelectedText更改?
看起来,您正在尝试在更改下拉列表值时从剃刀页面中提取提交的下拉列表值。
它可以通过使用 javascript 或不使用 javascript 的 onchnage 事件来实现。我向您展示剃须刀页面,因为javascript one很简单,因此您可以自己完成。
让我们在实践中看看我们如何实现这一目标。
首先,我们需要一个 onchnage 事件,该事件将在发生任何下拉更改事件时执行。
此外,通过提交的值,您可以筛选列表并检索预期值。
让我们看一下代码片段:
剃刀 cshtml.cs:
public class OnDropdownValueChangeModel : PageModel
{
public static List<SelectListItem> GetAll()
{
return new List<SelectListItem>
{
new SelectListItem() { Value = "0", Text = "Please Select Value" },
new SelectListItem() { Value = "1", Text = "Inventory Catalogue" },
new SelectListItem() { Value = "2", Text = "Service Catalogue" },
new SelectListItem() { Value = "3", Text = "Sub-Assembly" },
new SelectListItem() { Value = "4", Text = "Raw Material" },
new SelectListItem() { Value = "5", Text = "Finish Good" },
new SelectListItem() { Value = "6", Text = "Service Catalogue" }
};
}
public List<SelectListItem> selectListItems = new List<SelectListItem>();
public string? ProductTypeId { get; set; }
public string? SelectedValue { get; set; }
public void OnGet()
{
selectListItems = GetAll();
}
public void OnPostMyMethod()
{
var dropdownChangedValue = Request.Form["ProductTypeId"].ToString();
selectListItems = GetAll();
var searchSelectedValueFromDropdownList = selectListItems.Where(item => item.Value == dropdownChangedValue).First().Text;
SelectedValue = searchSelectedValueFromDropdownList;
}
}
Razor cshtml:
@page
@model RazorPageDemoApp.Pages.OnDropdownValueChangeModel
@{
}
<form method="post" asp-page-handler="MyMethod">
<select class="form-control"
asp-for="ProductTypeId"
asp-items="Model.selectListItems"
onchange="this.form.submit();">
</select>
</form>
@if (@Model.SelectedValue != null)
{
<div class="alert alert-success">
<label>Your seleted value were:</label> @Model.SelectedValue
</div>
}
输出:
注意:如果您仍需要任何进一步的帮助,可以参考此示例。
评论
Model.ProductTypeId
Model.ProductTypeId
ProductTypeId
asp-for="model.ProductTypeId"
auto-post-back