Cześć potrzebuje małego nakierowania. Chcę zrobić (pewnie przy pomocy routingu) przekierowanie na inną stronę czyli np (www.google.pl) na (www.kkk.pl) jakaś rada konkretna ? szukałem już lecz jakoś zbytnio nic mi nie pomogło. Na jednym widoku wyświetlam 3 akcje ale jak wpiszę konkretny url jednej z tych akcji to mi się wyświetli konkretny widok akcji i właśnie tą konkretną akcję chce przekierować na akcje gdzie wyświetlam 3 widoki
Do połowy myślałem, że rozumiem o co chodzi.
Ale po przeczytaniu ostatniego zdania nie mam pojęcia co chcesz zrobić.
mając public Action lala() return view chce to przekierować na Action tata() return view . Teraz lepiej czy dalej zagmatwanie ?
Przy return View()
możesz jako parametr podać nazwę widoku, który ma zostać zwrócony.
Tylko co to ma teraz wspólnego z początkiem w którym mówisz coś o przekierowaniu na zewnętrzne strony?
w głównym widoku plik.cshtml mam takie coś
<div>
@Html.Action("NewUsers", "Admin")
</div>
<div id="Information">
@Html.Action("NewRecipes", "Admin")
</div>
<div>
@Html.Action("ShowActiveQuestions")
</div>
i teraz jak wywołam np samo ShowActiveQuestions to mi wyświetli się tylko i wyłącznie ten widok a ja chcę by mi on przekierował go do głównego widoku
Prawdę powiedziawszy podobnie jak @some_ONE nie rozumiem co autor ma na myśli.
public ActionResult ShowActiveQuestions()
{
return View("Index"); // Index to twój widok do którego chcesz przekierować
}
@some_ONE @mariano901229 Tak wiem lecz wtedy zwracam wiodk z innej akcji a ja chce zwrócić z tej konkretniej. Tak jak wyżej w kodzie który wkleiłem wyświetlam 3 różne akcje które zwracają inny widok (przykładowy kod jednej akcji)
public ActionResult NewUsers()
{
var count = db.Users.Count();
if (count < 5) return RedirectToAction("ShowUsers", "Admin");
var model = db.Users.OrderBy(x => x.Id).Skip(count - 5).Take(5);
return View(model);
}
ale każdą z tych akcji mogę wyświetlić osobno. I teraz chce sie zabezpieczyć że jak ktoś poda ten adres to go przekieruje do AdminPanel
No i druga sprawa że wszystkie linki do css mam tylko w tym jedynm widoku
O ile dobrze zrozumiałem czego potrzebujesz to możesz każda z tych akcji oznaczyć atrybutem, że np tylko admin może ją wykonać, lub sprawdzić skąd idzie request poprzez
Request.UrlReferrer
.
Zamiast używać css w jednym widoku możesz używać layoutów.
Witam, czy chodzi Ci o autoryzacje żądania ? Jeżeli tak, to filtr autoryzacji sprawdza czy użytkownik, który żąda dostępu do źródła ma do niego prawo. Framework MVC ma wbudowany domyślny filtr autoryzacji można go również nadpisać i stworzyć swój własny. Pobaw się atrybutem [Authorize] i dodaj poniższy kod do web.config.
<authentication mode="Forms">
<forms loginUrl="~/UnAuthorize" timeout="2880" />
</authentication>
Tutaj masz coś podobnego http://stackoverflow.com/questions/7656163/asp-net-mvc-3-redirect-unauthorized-user-not-to-loginurl
Pozdrawiam.
Zastanów się: przekierowanie może zrobić tylko akcja kontrolera. To co jest wysyłane do przeglądarki określane jest przez to, co w akcji jest zwracane. Od tego już tylko mały kroczek do zobaczenia listy klas dziedziczących po ActionResult i wydedukowania, która z nich zawiera to, czego potrzebujesz.
Z poziomu akcji kontrolera daj w zależności od tego, co dokładnie potrzebujesz osiągnąć return: RedirectToAction
/RedirectToActionPermanent
albo Redirect
/RedirectPermanent
albo RedirectToRoute
/RedirectToRoutePermanent
. W przeglądarce przełoży się to na header Location: url i status http 301 (*Permanent) lub 302 (pozostałe).
Co do reszty osób wypowiadających się w tym wątku - autor napisał, że potrzebuje przekierowania na inną stronę. Co tu niezrozumiałego jest?