2 projekty mvc i przesył obiketu między nimi

0

Hej,
mam dwa projekty. W jednym projekcie mam link w menu do drugiego. W drugim projekcie w kontrolerze mam metodę Index która przyjmuje poprzez HttpPost obiekt w stylu:

public class Person
{
 public string Name {get; set;}
}

Do tej pory znalazłem coś takiego jak Redirect, ale w nim nie mogę dołożyć nic więcej niż adres URL na który chce przekierować.

Moje pytanie: jak powinna wyglądać akcja odpowiedzialna za stworzenie i przesłanie tego obiektu do tego drugiego kontrolera?

0

Zatwierdź formularz metodą POST na stronę zewn.

@using (Html.BeginForm(
     null, null, FormMethod.Post,
     new {@action="http://twoja.strona.pl/kontroler/akcjapost"}
)){
...
}
0

Nie będę miał żadnych danych od usera. W momencie kiedy kliknie na przycisk "forum" w pierwszym projekcie, chce aby nastąpiło przekierowanie do drugiego projektu - czyli forum i automatycznie "wsadziło" dane które je wyślę.
akcja w tym drugim projekcie do którego chce przekazać dane wygląda tak:

[HttpPost]
public ActionResult Blach(JakisModel jakisModel){...
0

Bezposrednio z kontrolera nie możesz przekierować POST'em tylko GET'em, więc jedynie możesz dodać do URL'a przy Redirect querystringa z parametrami, które zostaną zbindowane przez model.
czyli

return Redirect("http://twoja.strona.pl/kontroler/akcjaget?Name=costam&Parametr2=costam")

Wtedy oczywiscie masz wszystkie wady i ograniczenia zwiazane z żądaniem GET

0

Zrobiłem to tak:

 string postData = @"{""UserName"":""admin"",""Password"":""password""}";
            Uri uri = new Uri("http://localhost:9666/Members/Logon");
            HttpWebRequest request = null;
            request = (HttpWebRequest)WebRequest.Create(uri);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.ContentLength = postData.Length;
            using (Stream writeS = request.GetRequestStream())
            {
                UTF8Encoding encoding = new UTF8Encoding();
                byte[] bytes = encoding.GetBytes(postData);
                writeS.Write(bytes,0,bytes.Length);
            }

i działa pięknie.

0

Samo przekazanie danych mozna tak zrobic, myslalem ze zalezy Ci na przekierowaniu z jednoczesnym przekazaniem danych.

0

No tak ale to przekierowuje mnie przecież. Przynajmniej u mnie tak działa.

0

Teraz mam jeszcze inny problem :D
Mianowicie w tym drugim projekcie do którego wysyłam te dane, ustawiłem debugger: i ładnie pokazuje mi przesłane dane, wygląda tak samo jakbym normalnie odpalił ten projekt w przeglądarce i wysłał przez odpowiedni widok te dane: działa idealnie tak samo. Dane są te same, jednakże... funkcja wykonuje się identycznie dla obu przypadków, w pierwszym nie odświeża mi strony i nie pokazuje że zostałem zalogowany, natomiast w tym drugim przypadków (tak jakbym robił to przez widok) ładnie przeładowuje stronę i widać że jestem zalogowany... :/ wiem że trochę zagmatwane.

0

Tak ale request POST idzie od strony serwera a nie klienta, natomiast Redirect jest wykonywany po stronie przegladarki.
Czyli jak np. zostanie utworzona sesja przy wysylaniu danych, to zostanie ona utworzona dla serwera po wysłaniu żądania POST i osobna dla klienta po wykonaniu przekierowania.
Trzeba miec to na uwadze, jezeli ma to jakies znaczenie.

Edit:
no wlasnie o tym pisalem, jak napisales posta o nowym problemie ;)

0

no i właśnie nie wiem jak to teraz rozwiązać.

0

Złożony problem, w sieci znany jako SSO (Single Sign On). Trochę prostszy do rozwiązania, gdy aplikacje leżą w tej samej domenie (odpowiednia konfiguracja IIS i configa).

0

Nie, chyba się nie rozumiemy dalej.
Chce wysłać obiekt danej klasy do kontrolera w projekcie AAA i zrobić to tak jakby ten obiekt przyszedł z widoku który jest w projekcie AAA.
niestety to co na górze wkleiłem działa tylko w połowie: problem jest z ciastkami które nie są zapisywane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1