Utworzono częściowy widok (mimo że szablon edytora), przekazuję podrzędny model do widoku, jednak po kliknięciu "wyślij", zawsze otrzymuję "zerowy" od częściowego widok. Mogę uzyskać wartości właściwości modelu głównego oprócz modelu podrzędnego.Model powrotu z częściowego widoku problemu
Główny model
public class PetModel
{
public string name {get; set;}
public long SpeciesID {get; set;}
public long BreedID {get; set;}
public Calendar DOB {get; set;}
}
Sub model
public class Calendar
{
public string Year{get; set;}
public string Month{get; set;}
public string Day{get; set;}
}
Widok główny
@model Application.Models.PetModel
@using (Html.BeginForm("CatchPetContent", "Quote",Model))
{
@Html.TextBoxFor(x => x.Name)
@Html.DropDownListFor(x=>x.SpeciesID,new List<SelectListItem>(),"select")
@Html.DropDownListFor(x=>x.BreedID,new List<SelectListItem>(),"select")
@Html.EditorFor(Model => x.DOB)
<input type="submit" value="submit" />
}
Edytor szablonu
@model Application.Models.Calendar
@Html.DropDownListFor(Model => Model.Day, new List<SelectListItem>())
@Html.DropDownListFor(Model => Model.Month,new List<SelectListItem>())
@Html.DropDownListFor(Model => Model.Year, new List<SelectListItem>())
"CatchPetContent" działanie
[HttpPost]
public ActionResult CatchPetContent(PetModel Model)
{
PetModel pet = new PetModel();
pet.Name = Model.Name;
pet.SpeciesID = Model.SpeciesID;
pet.BreedID = Model.BreedID;
pet.DOB = Model.DOB;// always null
RouteValueDictionary redirectTargetDictionary = new RouteValueDictionary();
redirectTargetDictionary.Add("Controller", "Home");
redirectTargetDictionary.Add("Action", "Index");
return new RedirectToRouteResult(new RouteValueDictionary(redirectTargetDictionary));
}
Kiedy debugowany go "Model.DOB" jest zawsze zerowa
masz rację, ale dodałem początkową metodę do każdego rozwijanego menu, ale wciąż mam wartość zerową. Zanim kliknę "Wyślij", wybrałem wartości z rozwijanego menu, jednak po kliknięciu przycisku "Wyślij" model gniazda "Kalendarz" zostałby przypisany jako "null". Mam debugowane metody "SetProperty" w DefaultBuilder, wartość obiektu jest zawsze zerowa – user2376512
Spróbuj sprawdzić wartości przedmiotów z Fiddler, aby zobaczyć, że wartości formularza są rzeczywiście przekazywane z powrotem do serwera. Również jak wygląda kod HTML na rok, aby być powiązanym z modelem, powinien mieć nazwę taką jak DOB. Rok, jeśli nie, to nie będzie związany. –
od Fiddlera Mogę znaleźć ciąg poniżej name = test & SpeciesID = 2 & BreedID = 7 & DOB.Day = 23 & DOB.Month = 05 & DOB.Year = 2010 – user2376512