Tagi na forum.

C# 1456 XML 282
SQL 1192 sieci 268
ASP.NET 785 IIS 262
Windows 726 C++ 255
web 608 Html 218
Visual Studio 515 Information Technology 193
SQL Server 425 MSDN 167

pokaż wszystkie tagi na forum

[MVC] Html.Partial() i inny model niż w wywołującym widoku

Art000 2011-10-29 21:41:30
0
avatar
 
 

Witam,

mam problem z ASP .NET MVC3.

Problem jest trochę bardziej złożony, uproszczę go do maksimum.
Chcę zrobić osobny formularz do wprowadzania pewnych danych, niech będa to współrzędne geograficzne, formularz ten będzie używany na wielu stronach i wyswietlany jako widok częściowy.
Chciałbym więc aby był on uniwersalny i gadał z każdym modelem który wyświetla koordynaty (np. koordynaty miast, koordynaty muzeów, koordynaty pubów itp).

Pomyślałem więc, że w każdym modelu do którego chce wprowadzić koordynaty umieszczę pole z klasą reprezentująca koordynaty, i stworzę silnie typowany widok który będzie je reprezentował widok ten poprzez @Html.Partial, będe podpinał do widoków dedykowanych do wprowadzania informacji o miastach, muzeach, pubach itd.

Problem jest jednak taki, że dane wpisane w takim widoki nie "propaguja się" do widoku/modelu nadrzędnego, czyli tego który wywołał ów widok. (Wow, trochę zakręciłem).

Przykład:

model:

public class Miasto
{
    public Wspolrzedne Koordynaty { get; set; }
    public string Nazwa { get; set; }
}
public class Wspolrzedne
{
    public string LAT { get; set; }
    public string LNG { get; set; }
}


Kontroler:

public ActionResult MiastoCreate()
{
    new Miasto() {Koordynaty= new Wspolrzedne()}
}

[HttpPost]
public ActionResult MiastoCreate(OsrodekCreateVM model)
{
    model.Nazwa //OK - jest wartosc
    model.Wspolrzedne //jest nullem!!!!!!!
}

Widok "Create.cshtml"

@model Miasto
@using (Html.BeginForm())
{ 
   @Html.EditorFor(model=>model.Nazwa)
   @Html.Partial("Wsp", model.Koordynaty)
   <input type="submit" value="DODAJ" />
}
 


Widok "Wsp.cshtml"

@model Wspolrzedne
@Html.EditorFor(model=>model.LAT)
@Html.EditorFor(model=>model.LNG)


Tak jak napisalem w komentarzu Wspolrzedne w modelu sa nullem, nie zostaly wypelnione.

Co zle robie?
Czy wogole idzie zrobic cos takiego, jak najlepiej osiągnąć cel?

Z góry dzięki za pomoc!

 

 public ActionResult OsrodekCreate()
        {

tagi: mvc


kowalsks  2011-10-30 01:26:40 #1
0
avatar
 
 

 sprawdź co przekazuje obiekt FormCollection w kontrolerze

Jak dla mnie, to w kontrolerze MiastoCreate powinieneś odbierać obiekt MIASTO , ten co wysyłasz w MiastoCreate()


pozdrawiam Seba
Art000  2011-10-30 13:54:00 #1.1
0
avatar
 
 

Sorry, mój błąd, oczywiście w kontrolerze odbieram prawidłowy obiekt:

[HttpPost]
public ActionResult MiastoCreate(Miasto model)
{
    model.Nazwa //OK - jest wartosc
    model.Wspolrzedne //jest nullem!!!!!!!
}

Udziel odpowiedzi

avatar
Treść wpisu:

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.

Idź na górę strony