Ich habe diese XML:pflegen Zustand zwischen Controller-Calls
<Preferences>
<Section Name="PREF_SECTION_NAME_1">
<Preference Name="PREF_NOTIFY_1" Type="radio">
<Options>
<Option Name="PREF_OPT_YES" Value="true"/>
<Option Name="PREF_OPT_NO" Value="false"/>
</Options>
<Default>true</Default>
</Preference>
</Section>
</Preferences>
ich serialisiert dies zu einem Modell und passt am besten zu meiner Ansicht:
Teil meiner Ansicht
case "radio":
<b>@Html.Label(Model.Section[i].PreferenceModel[j].Name)</b>
for (var r = 0; r != Model.Section[i].PreferenceModel[j].Options.Count(); r++)
{
if (Model.Section[i].PreferenceModel[j].Default == Model.Section[i].PreferenceModel[j].Options[r].Value)
{
@Html.RadioButtonFor(m => m.Section[i].PreferenceModel[j].Name, Model.Section[i].PreferenceModel[j].Options[r].Value, new { @checked = true })
}
else
{
@Html.RadioButtonFor(m => m.Section[i].PreferenceModel[j].Name, Model.Section[i].PreferenceModel[j].Options[r].Value)
}
}
I (als Benutzer) wählt die 2. Radio-Taste (falsch)
Ich rufe dann meine Kontrolle er Methode auf der Submit-Button und ich bekommen diese Werte:
Ich brauche ‚Standard‘, um den Benutzer Wahl widerspiegeln, die in diesem Fall sollten ‚falsch‘ sein.
Ich habe jede Kombination versuchte ich mir vorstellen kann, aber es ist noch immer ‚null‘
jemand kann mir helfen?
dank
Leider habe ich aus ein Stück Code verpasst:
@Html.HiddenFor(m => m.Section[i].PreferenceModel[j].Name, "Default")
die HTML gerendert:
<h1><label for="PREF_SECTION_NAME_1">PREF_SECTION_NAME_1</label></h1>
<div class="clear"></div>
<input length="4" id="Section_0__PreferenceModel_0__Type" name="Section[0].PreferenceModel[0].Type" type="hidden" value="radio">
<input length="4" id="Section_0__PreferenceModel_0__Name" name="Section[0].PreferenceModel[0].Name" type="hidden" value="PREF_NOTIFY_1">
<b><label for="PREF_NOTIFY_1">PREF_NOTIFY_1</label></b>
<input checked="True" id="Section_0__PreferenceModel_0__Name" name="Section[0].PreferenceModel[0].Name" type="radio" value="true">
<input id="Section_0__PreferenceModel_0__Name" name="Section[0].PreferenceModel[0].Name" type="radio" value="false">
<input length="7" id="Section_0__PreferenceModel_0__Name" name="Section[0].PreferenceModel[0].Name" type="hidden" value="PREF_NOTIFY_1">
mein Modell:
[XmlRoot("Preferences")]
public class PreferencesModel
{
/// <summary>
/// Message to display to user on UI
/// </summary>
[XmlIgnore]
public string MessageToUser { get; set; }
/// <summary>
/// Stores Preferences
/// </summary>
[XmlElement(ElementName = "Section")]
public List<Section> Section { get; set; }
}
public class Section
{
/// <summary>
/// Name of Section (for Grouping Purposes)
/// </summary>
[XmlAttribute("Name")]
public string Name { get; set; }
/// <summary>
/// List of Preferences for this section
/// </summary>
[XmlElement("Preference")]
public List<PreferenceModel> PreferenceModel { get; set; }
}
public class PreferenceModel
{
/// <summary>
/// Type of HTML Control ie radio button, textbox
/// </summary>
[XmlAttribute("Type")]
public string Type { get; set; }
/// <summary>
/// Name of Preference
/// </summary>
[XmlAttribute("Name")]
public string Name { get; set; }
/// <summary>
///
/// </summary>
//[XmlAttribute("Default")]
[XmlElement("DefaultValue")]
public string DefaultValue { get; set; }
[XmlIgnore]
public bool CheckBoxValue
{
get
{
bool flag;
if (Boolean.TryParse(DefaultValue, out flag))
{
return flag;
}
else
{
return false;
}
}
set
{
DefaultValue = value.ToString();
}
}
/// <summary>
///
/// </summary>
[XmlElement("Options")]
public List<Option> Options { get; set; }
}
[XmlType("Option")]
public class Option
{
/// <summary>
///
/// </summary>
[XmlAttribute("Name")]
public string Name { get; set; }
/// <summary>
///
/// </summary>
[XmlAttribute("Value")]
public string Value { get; set; }
}
haben Sie den Ausdruck html.hiddenfor in das Formular eingefügt? –
@StianStandahl ja. Na sicher. danke –
hast du ein beispiel für den resultierenden html? –