MVC5 Razor, html.dropdownlistfor ausgewählt, wenn der Wert im array
Entwickle ich eine ASP.NET MVC 5-Anwendung mit C# und .NET Framework 4.6.1.
Habe ich diese View
:
@model MyProject.Web.API.Models.AggregationLevelConfViewModel
[...]
@Html.DropDownListFor(m => m.Configurations[0].HelperCodeType, (SelectList)Model.HelperCodeTypeItems, new { id = "Configurations[0].HelperCodeType" })
Den ViewModel
ist:
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);
}
}
}
Sowie Models.AggregationLevelConfiguration
ist:
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; }
}
Ich brauche, um ausgewählten Wert in diesen Eigenschaften:
public IEnumerable<SelectListItem> CodeTypeItems
{
get { return new SelectList(codeTypes, "Id", "Name"); }
}
public IEnumerable<SelectListItem> HelperCodeTypeItems
{
get { return new SelectList(helperCodeTypes, "Id", "Name"); }
}
Aber ich kann nicht legen Sie es in new SelectList(codeTypes, "Id", "Name");
oder new SelectList(helperCodeTypes, "Id", "Name");
weil der ausgewählte Wert in Configurations
Arrays: Felder AggregationLevelConfiguration.CodeType
und AggregationLevelConfiguration.HelperCodeType
.
Ich glaube, ich habe zum einstellen ausgewählten Wert in der Ansicht, aber ich weiß nicht, wie es zu tun.
Wie kann ich die ausgewählten Werte?
Seine eine unglückliche Einschränkung der Verwendung von
Danke. Ich habe verstanden, dass ich die Dinge, aber ich weiß nicht, wie Sie zu verwenden sind.
Ich versuche eine Antwort zu finden, gab ich vor etwa 6 Monaten mit dem code für beide Optionen, aber ohne Glück. Wenn ich Sie nicht finden kann, werde ich eine Antwort in einer Stunde oder so - aber das folgende sollte funktionieren -
Ich arbeite an einer Lösung mit jQuery, um die option auszuwählen.
Ja, das funktioniert. Danke.
DropDownListFor()
in einer Schleife. Sie brauchen, um einen neuen zu generieren MutliSelectList
in jeder iteration (Einstellung der selectedValues
Eigenschaft im Konstruktor), oder (besser), verwenden Sie eine EditorTemplate
für typeof AggregationLevelConfiguration
und übergeben Sie die SelectList
der Vorlage AdditionalViewData
Danke. Ich habe verstanden, dass ich die Dinge, aber ich weiß nicht, wie Sie zu verwenden sind.
Ich versuche eine Antwort zu finden, gab ich vor etwa 6 Monaten mit dem code für beide Optionen, aber ohne Glück. Wenn ich Sie nicht finden kann, werde ich eine Antwort in einer Stunde oder so - aber das folgende sollte funktionieren -
@Html.DropDownListFor(m => m.Configurations[0].HelperCodeType, new SelectList(Model.HelperCodeTypeItems, "Value", "Text", Model.Configurations[0].HelperCodeType, new { ... })
Ich arbeite an einer Lösung mit jQuery, um die option auszuwählen.
Ja, das funktioniert. Danke.
InformationsquelleAutor VansFannel | 2016-05-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider
@Html.DropDownListFor()
verhält sich ein wenig anders als andere Helfer beim Rendern von controls in einer Schleife. Dies wurde bereits berichtet, wie ein Problem auf CodePlex (nicht sicher, ob es ein bug oder einfach nur eine Einschränkung)Sind die 2 option, um dieses Problem zu lösen, um sicherzustellen, dass die richtige option ausgewählt ist, basierend auf dem Modell-Eigenschaft
Option 1 (mit einer
EditorTemplate
)Erstellen Sie eine benutzerdefinierte
EditorTemplate
für die Art in der Sammlung. Erstellen Sie eine teilweise in/Views/Shared/EditorTemplates/AggregationLevelConfiguration.cshtml
(Hinweis: der name muss mit dem Namen des Typsund dann in der Hauptansicht, vorbei an der
SelectList
zu denEditorTemplate
alsadditionalViewData
Option 2 (generieren Sie eine neue
SelectList
in jeder iteration, und legen Sie dieselectedValue
)In dieser option Ihre Immobilie
CodeTypeItems
werden sollteIEnumerable<GenericIdNameType>
, nicht einSelectList
(oder nurcodeTypes
eine öffentliche Eigenschaft). Dann in der HauptansichtSeite Hinweis: es gibt keine Notwendigkeit zu verwenden
new { id = "Configurations[0].HelperCodeType"
- dieDropDownListFor()
Methode bereits generiert, dieid
AttributInformationsquelleAutor
Schrieb ich diese Klasse zu überwinden, ein Problem hatte ich mit der Auswahl einer option in einem html-select-Liste. Ich hoffe, es hilft jemand.
Und
Nehmen und zu nutzen:
InformationsquelleAutor JasonG
Lasse ich in diesem Fall hilft es jemand anderes. Ich hatte ein sehr ähnliches problem, und keine der Antworten geholfen.
Hatten wir in einem view diese Zeile oben:
und dann unten in der Ansicht:
Wir hatten eine Eigenschaft, die in meinem ViewData mit dem gleichen Namen wie der Selektor für die lambda-Ausdruck, und für einige Grund, dass die macht der dropdown-Liste dargestellt werden ohne gewählten option.
Wir haben den Namen geändert in ViewData
ViewData["ExitFromTrustDeed2"]
und das machte es so funktioniert wie erwartet.Komisch wenn.
InformationsquelleAutor Alberto Sadoc