ASP.NET MVC denetleyicisinden harici URI'ye yönlendirme


170

Bir eylem yönteminden harici URL'ye yönlendirmeye çalışıyorum, ancak çalışamıyor. Benim hatama kimse ışık tutabilir mi?

public void ID(string id)
    {
        string url = string.Empty;
        switch (id)
        {
            case "DB2FCB11-579F-4DA2-A68C-A6495B9BAAB5":

                url = "http://www.somesite.com";
                break;
        }
        Response.Redirect(url, true);
    }

Teşekkürler, Chris


1
Senin hatan ne Veya belirti? Bu herhangi bir yere gidiyor mu?
Paul Sasik

Yanıtlar:


342

ASP.NET MVC hakkında konuşuyorsanız, aşağıdakileri döndüren bir denetleyici yönteminiz olmalıdır:

return Redirect("http://www.google.com");

Aksi takdirde, yönlendirmede karşılaştığınız hata hakkında daha fazla bilgiye ihtiyacımız var. URL'nin boş olmadığından emin olmak için adım atarım.


5
İsteğe bağlı olarak, bunun yerine bunu yapabilirsiniz: return new RedirectResult ("yourURL", true); Bu hemen hemen aynıdır, ancak sonunda kalıcı bir yönlendirme olup olmadığını belirtmek için parametre verir (HTTP
301'e karşılık

@ Mr.Pichler Büyük olasılıkla 302, ancak her zaman Fiddler ile görüşebilirsiniz.
Yuriy Faktorovich

1
Yönlendirme (kural) 302 ve YönlendirmePermanent (url) 301'dir. Kontrol edin: stackoverflow.com/questions/17517318/…
TNT

Bu yerel bir HTML dosyası ile çalışma hakkında herhangi bir düşünce? Çalışmıyor:> return Redirect ("C: /Users/Me/Documents/test.html");
Steve Eggering,


15

JavaScript kullanma

 public ActionResult Index()
 {
    return Content("<script>window.location = 'http://www.example.com';</script>");
 }

Not: @Jeremy Ray Brown'un dediği gibi, Bu en iyi seçenek değil, ancak bazı durumlarda yararlı bulabilirsiniz.

Bu yardımcı olur umarım.


1
Böyle bir şey işe yarayabilir, ancak bir denetleyici hangi eylemin gerçekleştirileceğine karar verir. Katılmak için bir senaryoya ihtiyacınız yok.
Jeremy Ray Brown

6
İster inanın ister inanmayın, bu yaklaşım gibi bir şey bana yardımcı oldu. Her yerde eski web formları koduyla birlikte bir ASP.NET MVC / AngularJS uygulamamız var. Açısal yönlendirme kullanan bir URL'ye yönlendirmeye benzer bir şey kullandım. Açısal yönlendirme URL'de # işaretini izlediğinden, yalnızca istemci tarafında tanınır, bu nedenle Yönlendirme bu tür URL'ler için kullanılamaz.
Giriş

@TNT Evet haklısın, bunu başkaları için yararlı olabilecek bir seçenek olarak sağladım.
shaijut

1
Nazik olmasaydım üzgünüm. Bu yaklaşımı, Google Analytics'teki bir numaralı ziyaret gibi yönlendirmeyle bir komut dosyası çalıştırmam gerektiğinde kullanıyorum.
TNT

Sonunda işe yarıyor. @Yuriy'nin doğrudan yönlendirme çözümü benim için başarısız oldu. Güvenlik nedeniyle, MVC uygulamamıza giden isteklerin proxy sunucusu üzerinden taranması gerekir - IIS, Rewrite addin + rewrite kuralı. Bu kombinasyon muhtemelen yönlendirme URL'si ile uğraşıyor. Yani yani. Ben yönlendirme istediğinizde example.com/action için example.org/?search=xyz kullanarak return Redirect("https://www.example.org/?search=xyz");sonuca yönlendirmekten olan example.com/?search=xyz .
Kraken101

0

Belki birisinin aradığı çözüm şudur:

Response.Redirect("/Sucesso")

Bu çalışma Görünüm'de de kullanıldığında.



-3

Bunu deneyin (Ana denetleyiciyi ve Dizin Görünümü'nü kullandım):

return RedirectToAction("Index", "Home");

Bu, harici bir URI'ye ve bunun yerine Ev Denetleyicisi üzerindeki Dizin Eylemine yönlendirme yapmaz.
Anthony Potts
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.