"RedirectToAction" kullanarak denetleyiciden bir karmaya yeniden yönlendirme


89

Merhaba Mvc Denetleyiciden bir çapa döndürmek istiyorum

Denetleyici adı = DefaultController;

public ActionResult MyAction(int id)
{
        return RedirectToAction("Index", "region")
}

Böylece dizine yönlendirildiğinde url

http://localhost/Default/#region

Böylece

<a href=#region>the content should be focus here</a>

Bunu şu şekilde yapıp yapamayacağınızı sormuyorum: URL'me nasıl bağlantı etiketi ekleyebilirim?



Yanıtlar:


134

Bu yolu buldum:

public ActionResult MyAction(int id)
{
    return new RedirectResult(Url.Action("Index") + "#region");
}

Ayrıca bu ayrıntılı yolu da kullanabilirsiniz:

var url = UrlHelper.GenerateUrl(
    null,
    "Index",
    "DefaultController",
    null,
    null,
    "region",
    null,
    null,
    Url.RequestContext,
    false
);
return Redirect(url);

http://msdn.microsoft.com/en-us/library/ee703653.aspx


1
Sen dahice bir eşsin! Burada yapmayı sonlandırdığım şey: yeni RedirectResult döndür (Url.Action ("Index", new {PKMvrEmployeeId = MvrId}) + "#region");
— gizlendi

1
Redirect (..) yöntemini çağırmak yerine RedirectResult kullanmak için +1. MVC altında yayımlanan ve IIS6'da yeniden yönlendirmenin neden olduğu istisnalarla karşılaşabilirsiniz, çünkü bir istek zaten yönlendirilmiş olabilir veya bir alt eylemin parçası veya içerik zaten gönderilmiştir.
— Jaans

2
MVC 5'te, RedirectToAction kullanılırken # karakterinden bir% 23'e çıkılıyor gibi görünüyor. Bunu yaşayan başka kimse yok mu?
— jakejgordon

Benim için aynı yöntemi kullandığımda tekrar yukarı çıkıyor.
— Zeeshan Ahmad Khalil

14

Harika cevap gdoron. İşte kullandığım başka bir yol (sadece buradaki mevcut çözümlere eklemek için).

return Redirect(String.Format("{0}#{1}", Url.RouteUrl(new { controller = "MyController", action = "Index" }), "anchor_hash");

Açıkçası, gdoron'un cevabı ile bu, bu basit durumda aşağıdaki şekilde daha temiz yapılabilir;

return new RedirectResult(Url.Action("Index") + "#anchor_hash");

Eyleminiz farklı bir denetleyicide ise ilk seçenek iyi çalışır.
— Chad Hedgcock

11

Nokta net çekirdekte basit bir yol

public IActionResult MyAction(int id)
{
    return RedirectToAction("Index", "default", "region");
}

Yukarıdaki, / default / index # bölgesini verir . 3. parametre, bir # 'dan sonra eklediği parçadır .

Microsoft docs - ControllerBase


4

Squall'ın cevabını genişletmek için: Dize enterpolasyonu kullanmak daha temiz kod sağlar. Aynı zamanda farklı denetleyiciler üzerindeki eylemler için de çalışır.

return Redirect($"{Url.RouteUrl(new { controller = "MyController", action = "Index" })}#anchor");
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.