Bir URL'ye/kullanıcılara/4 # Özet'e yönlendirmek için bir RedirectToRouteResult kullanmak istiyorum. ASP.NET MVC 1.0'ı kullanarak, bunu yapmanın bir yolunu bulamadım - onu özledim mi?Anchor/hash için bir RedirectToRouteResult parametresine nasıl parametre ekleyebilirim?
cevap
You should düzeltmek gerekir isteğe bağlı çapa parçasını izin iyi yollar ama RedirectToRouteResult basit kalıtım ve ExecuteResult geçersiz kılma olabilir rotalarınızı rota tablosunda düzgün şekilde oluşturun. Örn .:
routes.MapRoute("MyRoute" ,"{controler}/{id}#{detail}" ,new { controller = "users", action = "index", id = (string)null, detail = "Summary" });
Sitemde böyle bir şey yapıyorum here. Ancak RedirectToRouteResult
ile değil. RedirectToRouteResult
, URL'ye bir çapa parçası dahil etmeyi desteklemez.
Bağlantıyı kendiniz ve hatta bağlantı parçasının işlenmesiyle ilgili mantığı oluşturmalısınız - benim yaptığım gibi. Uygulamam Facebook fotoğraf galerisi görünümlerine benzer işlevleri çoğaltmaya çalışır. Farklı bir sayfaya giden her bağlantının benzersiz bir URL'si olmalıdır. Bu nedenle, çapa bölümünü kullanıyorum. Ancak coz doğrudan bir rotaya çevirmiyor, URL'nin çapa kısmını sayfa üzerinde elle ayrıştırmam gerekiyor ve uygun içeriğe yüklemek için ajax kullanıyorum. İstediğim şey bu yüzden benim için çalışıyor.
source code of MVC indirin ve RedirectToRouteResult nasıl çalıştığını kontrol
problemi
Ben benzer bir sorun vardı burada bir göz atın:
Linking to location on page (#id) through ASP.NET MVC mechanisms?
Ben # kullanarak bir yol oluşturarak sona erdi.
UrlHelper.GenerateUrl bir parça parametresi içerir. Ben ne sen, alacağınız şekilde kontrol etmek için birim testinde bir RedirectToFragmentResult sınıfı
public class RedirectToFragmentResult: RedirectResult
{
public UrlHelper Url {get;set;}
public string Action { get; set; }
public string Controller { get; set; }
public string Fragment { get; set; }
public object RouteValues { get; set; }
public RedirectToFragmentResult(UrlHelper url, string action, string controller, string fragment, object routeValues)
:base(url.Action(action, controller, fragment, routeValues))
{
Url = url;
Action = action;
Controller = controller;
Fragment = fragment;
RouteValues = routeValues;
}
}
Sonra sadece yeni RouteValueDictionary (result.RouteValues) oluşturabilir oluşturulan
public static string Action(this UrlHelper url, string actionName, string controllerName, string fragment, object routeValues)
{
return UrlHelper.GenerateUrl(
routeName: null,
actionName: actionName,
controllerName: controllerName,
routeValues: new System.Web.Routing.RouteValueDictionary(routeValues),
fragment: fragment,
protocol: null,
hostName: null,
routeCollection: url.RouteCollection,
requestContext: url.RequestContext,
includeImplicitMvcValues: true /*helps fill in the nulls above*/
);
}
Sonra bir uzantısı yöntemi yarattı bir RedirectToRouteResult.
Teşekkürler @Joel Bu çok iyi çalışıyor gibi görünüyor. Yerel URL özelliği olmasına gerek yok ('gizler' uyarısı atar). Kaldırılan satırlarla test ettim: "public UrlHelper Url {get; set;} 've' Url = url; '- bunun neden herhangi bir nedeni var? – Chris
Hata ayıklama için bunu kullanıyorum, bu yüzden izleme penceresinden urlhelper'a erişebilirim, ancak bu tabanı düzeltirsiniz (url.Action, kullanılan son gerçek zaman ve test için gereksizdir) –
- 1. Geçme querystrings RedirectToRouteResult için
- 2. BroadcastReceiver parametresine geçirme
- 3. Javadoc'ta bir yöntem parametresine başvuru nasıl eklenir?
- 4. Yöntemin bir parametresine şablon parametresi olarak imzalanması
- 5. Bir wstring'e nasıl ekleyebilirim?
- 6. Onclick için bir windows onload işlevim var Onblur olayını nasıl ekleyebilirim ve bir tanesine nasıl ekleyebilirim?
- 7. Yerel bir CComSafeArray bir LPSAFEARRAY çıkış parametresine nasıl geri döner?
- 8. Bir dersi pypy'de nasıl ekleyebilirim?
- 9. Python, bir işlev işaretçisi parametresine bir argüman nasıl iletilir?
- 10. Menubar'a nasıl bir QLineEdit ekleyebilirim
- 11. Octave'de bir vektöre nasıl ekleyebilirim?
- 12. Monodevelop'ta nasıl bir referans ekleyebilirim?
- 13. WebView'i bir Widget'a nasıl ekleyebilirim?
- 14. ModelState.AddModelError - Bir özellik için olmayan bir hatayı nasıl ekleyebilirim?
- 15. Parametre ben bir parametre alıyorum
- 16. Resim dosyasını gövde parametresine alma
- 17. Üstteki android için Bar'ı nasıl ekleyebilirim?
- 18. Özel düğme için nasıl görüntü simgesi ekleyebilirim?
- 19. Sonsuz miktarda argümanı desteklemek istediğimde bir options nesnesini parametre olarak nasıl ekleyebilirim?
- 20. 'NSInvalidArgumentException', nedeni: 'Bu parametre nil' parametresine parametreler gönderilirken bu hatayı gösteren 'nil' gösteriliyor
- 21. ASP.NET MVC görünümümde bir yol parametresine nasıl erişirim?
- 22. WebRequest içine nasıl parametre eklenir?
- 23. wifstream, _wfopen'in "mode" parametresine eşdeğerdir?
- 24. Visual Studio için pthread.h dosyasını nasıl ekleyebilirim?
- 25. Düzeni bir parametre olarak parametre olarak geçirme
- 26. Bir hizmet için isteğe bağlı parametre bağımlılığı
- 27. MATLAB: Bir görüntüden bir daire nasıl ekleyebilirim
- 28. denetleyiciden parametre göndermek için
- 29. Bu varsayılan şablon parametresine neden izin verilmiyor?
- 30. TTTableViewDragRefreshDelegate'ı UITabBarController'da yalnızca bir sayfa için nasıl ekleyebilirim?
Bu sadece; Kendimi bir URL oluşturabileceğimi biliyorum, ancak örneğin test ederken, birim testlerimde güçlü bir şekilde yazılan kontrollerden yararlanmak istiyorum. –
görüyorum. iyi şansın olduğunu düşünüyorum o zaman –