eingestellt Ich habe ein Problem mit meiner App, erkläre versuchen, mit einem Beispiel zu erklären, ich habe ein Formular, dieses Formular existieren mehrere Textfelder und Dropdown-Listen. Für die Wiederverwendbarkeit habe ich 3 Dropdown-Listen in eine Teilansicht zusammengeführt, diese Teilansicht lade ich mit @ Html.Action, das funktioniert ok, wenn ich das Formular starte sehe ich alles erscheint so wie es sein sollte, obwohl ich nicht weiß warum aber diese benötigt Drop-Down-Listen direkt mit rot Start und sagte, es ist Pflichtfelder.MVC 3 Model Eigenschaft wird nicht in Teilansicht von html.action
Aber wenn ich alles fülle, und ich wähle die Werte aus den Dropdown-Listen, und ich klicke auf OK, die Werte von Dropdown-Listen sind NULL.
ich denke, es mit einem Code Beispiel mehr comprehendable sein wird:
Hauptmodell:
public class FormModel
{
[Required]
public string UserName { get; set; }
[Required]
[Display(Name = "Birthdate")]
public DateTime? Birthdate { get; set; }
//This is what i'm talking about, that is not being set, the location
public Location Location { get; set; }
}
Hier ist die Lage Klasse, die dann auf die Teilansicht übergeben wird und in der Regel denke ich sein soll Set, sieht es wie folgt aus:
public class Location
{
[Required]
[Display(Name = "Country")]
public string CountryId { get; set; }
[Required]
[Display(Name = "Region")]
public string RegionId { get; set; }
[Required]
[Display(Name = "City")]
public string CityId { get; set; }
}
Jetzt haben wir eine Teilansicht für den Standort:
@model TestWebsite.Models.Location
<tr>
<td class="editor-label">
@Html.LabelFor(m => m.CountryId)
</td>
<td class="editor-field">
@Html.DropDownListFor(m => m.CountryId, Model.Countries, "---select--", null)
</td>
<td>
@Html.ValidationMessageFor(m => m.CountryId)
</td>
</tr>
<!-- Region -->
<tr>
<td class="editor-label">
@Html.LabelFor(m => m.RegionId)
</td>
<td class="editor-field">
@Html.DropDownListFor(m => m.RegionId, Enumerable.Empty<SelectListItem>(), "---select--", null)
</td>
<td>
@Html.ValidationMessageFor(m => m.RegionId)
</td>
</tr>
<!-- City -->
<tr>
<td class="editor-label">
@Html.LabelFor(m => m.CityId)
</td>
<td class="editor-field">
@Html.DropDownListFor(m => m.CityId, Enumerable.Empty<SelectListItem>(), "---select--", null)
</td>
<td>
@Html.ValidationMessageFor(m => m.CityId)
</td>
</tr>
Dann nennen wir diese Teilansicht in den Formen wie folgt aus:
@Html.Action("LocationGroup", "Account", Model.Location)
Und schließlich in der Steuerung:
[ChildActionOnly]
public ActionResult LocationGroup(Location model)
{
model.Countries = GetCountries();
return PartialView("_LocationView", model);
}
Ich weiß, dass es eine Menge Code, aber ich hoffe, dass Sie helfen könnte mir ...
** Aber wenn ich alles einfüge, und ich wähle die Werte aus den Dropdown-Listen, und ich klicke auf OK, die Werte aus Dropdown-Listen sind NULL. ** Haben Sie versucht, die Formulare mit 'JQuery/JSON' zu senden oder haben Sie versucht, den Formularinhalt durch Einschließen von' Ajax.Begin' festzulegen? – wwcdwdcw
Könnten Sie die Namen der Eigenschaften überprüfen, die an den Server gesendet werden (zum Beispiel über Firebug)? Ich wette, dass die Namen, die Ihrer Teilansicht entsprechen, nicht zum Modell in der Namensform passen. Also mvc kann nicht zur verbindung. – Vic