C# ve .NET Framework 4.6.1 ile bir ASP.NET MVC 5 uygulaması geliştiriyorum.MVC5 Razor html.dropdownlist değeri değer dizisinde olduğunda seçili olan set
@model MyProject.Web.API.Models.AggregationLevelConfViewModel
[...]
@Html.DropDownListFor(m => m.Configurations[0].HelperCodeType, (SelectList)Model.HelperCodeTypeItems, new { id = "Configurations[0].HelperCodeType" })
ViewModel
geçerli::
public class AggregationLevelConfViewModel
{
private readonly List<GenericIdNameType> codeTypes;
private readonly List<GenericIdNameType> helperCodeTypes;
public IEnumerable<SelectListItem> CodeTypeItems
{
get { return new SelectList(codeTypes, "Id", "Name"); }
}
public IEnumerable<SelectListItem> HelperCodeTypeItems
{
get { return new SelectList(helperCodeTypes, "Id", "Name"); }
}
public int ProductionOrderId { get; set; }
public string ProductionOrderName { get; set; }
public IList<Models.AggregationLevelConfiguration> Configurations { get; set; }
public AggregationLevelConfViewModel()
{
// Load CodeTypes to show it as a DropDownList
byte[] values = (byte[])Enum.GetValues(typeof(CodeTypes));
codeTypes = new List<GenericIdNameType>();
helperCodeTypes = new List<GenericIdNameType>();
for (int i = 0; i < values.Length; i++)
{
GenericIdNameType cType = new GenericIdNameType()
{
Id = values[i].ToString(),
Name = EnumHelper.GetDescription((CodeTypes)values[i])
};
if (((CodeTypes)values[i]) != CodeTypes.NotUsed)
codeTypes.Add(cType);
helperCodeTypes.Add(cType);
}
}
}
Ve Models.AggregationLevelConfiguration
geçerli:
public class AggregationLevelConfiguration
{
public byte AggregationLevelConfigurationId { get; set; }
public int ProductionOrderId { get; set; }
public string Name { get; set; }
public byte CodeType { get; set; }
public byte HelperCodeType { get; set; }
public int PkgRatio { get; set; }
public int RemainingCodes { get; set; }
}
Ben bu özelliklerin seçilen değeri ayarlamanız gerekir:
BuView
var
alanlar
AggregationLevelConfiguration.CodeType
ve
AggregationLevelConfiguration.HelperCodeType
: Seçilen değer
Configurations
dizi olduğu için
public IEnumerable<SelectListItem> CodeTypeItems
{
get { return new SelectList(codeTypes, "Id", "Name"); }
}
public IEnumerable<SelectListItem> HelperCodeTypeItems
{
get { return new SelectList(helperCodeTypes, "Id", "Name"); }
}
Ama new SelectList(codeTypes, "Id", "Name");
veya new SelectList(helperCodeTypes, "Id", "Name");
bunu ayarlanamaz.
Ben görünümünde seçilen değere ayarlamak zorunda düşünüyorum, ama bunu nasıl bilmiyorum.
Seçilen değerleri nasıl ayarlayabilirim? Bir döngü içinde denetimleri işlerken
Onun kullanılarak talihsiz bir sınırlama 'DropDownListFor() 'o. Her yinelemede yeni bir 'MutliSelectList 'oluşturmalısınız (kurucuda' selectedValues' özelliğini ayarlayarak) veya (daha iyi), 'AgregationLevelConfiguration' türünün bir' EditorTemplate'ını kullanın ve 'SelectList’i şablon olarak' EkViewData' –
Teşekkürler.Bir şeyleri kullanmam gerektiğini anladım ama onları nasıl kullanacağımı bilmiyorum. – VansFannel
6 ay önce verdiğim bir cevabı bulmaya çalışıyorum. Eğer bulamıyorsam, bir saat içinde bir cevap ekleyeceğim - ama aşağıdakiler işe yarar - '@ Html.DropDownListFor (m => m.Configurations [0] .HelperCodeType, yeni SelectList (Model.HelperCodeTypeItems,") Değer "," Metin ", Model.Configurations [0] .HelperCodeType, yeni {...})' –