Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1563 | Anzahl registrierter User: 1895 | Besucher online: 104
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Render MVC Action as string


Autor: Jens Hofmann
Sprache: C#
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 2740
  
Kick it on dotnet-kicks.de  

Beschreibung:

This code allows you to render a mvc action as a string. So it can be used in ASP.Net webForms and so on.

Abgelegt unter: mvc, action, string.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
using System;
using System.Collections.Generic;
using System.IO;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using MvcApplication1.Controllers;

namespace MvcApplication1
{
	public partial class WebForm1 : System.Web.UI.Page
	{
		protected void Page_Load(object sender, EventArgs e)
		{
			Response.Write("<pre>" + HttpUtility.HtmlEncode(MVCHelper.RenderAction<HomeController>("Index")) + "</pre>");
		}
	}

	public static class MVCHelper
	{
		public static string RenderAction<TController>(string strActionName, RouteValueDictionary dicRouteValueDictionary = null) where TController : Controller
		{
			return RenderAction(HttpContext.Current, GetControllerName<TController>(), strActionName, dicRouteValueDictionary);
		}

		public static string RenderAction<TController>(HttpContext objHttpContext, string strActionName, RouteValueDictionary dicRouteValueDictionary = null) where TController: Controller
		{
			return RenderAction(objHttpContext, GetControllerName<TController>(), strActionName, dicRouteValueDictionary);
		}

		public static string RenderAction(HttpContext objHttpContext, string strControllerName, string strActionName, RouteValueDictionary dicRouteValueDictionary = null)
		{
			if (dicRouteValueDictionary == null)
				dicRouteValueDictionary = new RouteValueDictionary();

			RouteData objData = new RouteData();
			objData.Values["controller"] = strControllerName;
			objData.Values["action"] = strActionName;

			foreach (KeyValuePair<string, object> objPair in dicRouteValueDictionary)
				objData.Values[objPair.Key] = objPair.Value;
			
			HttpContextBase objContext = new HttpContextWrapper(objHttpContext);
			RequestContext objRequestContext = new RequestContext(objContext, objData);
			IControllerFactory objControllerFactory = ControllerBuilder.Current.GetControllerFactory();
			IController objController = objControllerFactory.CreateController(objRequestContext, strControllerName);
			string strResult = objController.ExecAsString(objRequestContext);
			objControllerFactory.ReleaseController(objController);

			return strResult;
		}

		private static string GetControllerName<TController>() where TController : Controller
		{
			const string POSTFIX = "Controller";
			string strControllerName = typeof (TController).Name;

			return strControllerName.EndsWith(POSTFIX) ? strControllerName.Remove(strControllerName.Length - POSTFIX.Length) : strControllerName;
		}

		private static string ExecAsString(this IController objController, RequestContext objRequestContext)
		{
			using (ResponseStringRedirect objRedirect = new ResponseStringRedirect(objRequestContext.HttpContext.Response))
			{
				objController.Execute(objRequestContext);

				return objRedirect.ToString();
			}
		}

		private class ResponseStringRedirect : IDisposable
		{
			private readonly HttpResponseBase _objResponse;
			private readonly TextWriter _objResponseWriter;
			private StringWriter _objStringWriter;

			public ResponseStringRedirect(HttpResponseBase objResponse)
			{
				_objResponse = objResponse;
				_objResponseWriter = objResponse.Output;
				_objStringWriter = new StringWriter();
				objResponse.Output = _objStringWriter;
			}

			public override string ToString()
			{
				_objStringWriter.Flush();

				return _objStringWriter.ToString();
			}

			public void Dispose()
			{
				if (_objStringWriter == null)
					return;

				_objStringWriter.Dispose();
				_objStringWriter = null;
				_objResponse.Output = _objResponseWriter;
			}
		}
	}
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



Diese Snippets könnten für Sie interessant sein:
[C#] Entity Parser for MVC and S#arp Architecture
[C#] URL Redirects mit ASP.NET MVC
[C#] Threadsicherer Codeaufruf im Control-Kontext (Invoking)
[C#] CallAndWait
[C#] Hexcode eines Strings ausgeben
[VB.NET] Größe eines Strings berechnen
[C#] String bei bestimmten Zeichen splitten
[C#] Encode To ASCII - Buchstaben in Ascii-Werte umwandeln
[C#] Gibt den MD5 Hash eines Stings als String zurück.
[C#] String in Byte Array und zurück wandeln
[VB.NET] Den SHA1 Hash eines Strings ermitteln
[VB.NET] Den MD5 Hash eines Strings ermitteln
[C#] Wandelt ein Bytearray in einen Binärstring
[VB.NET] Text auf Bild zeichnen
[C#] String auf Emailadresse prüfen
[C#] SHA-1 Hash eines Strings erzeugen
[VB.NET] Strings schnell zählen
[VB.NET] Pfad kürzen
[VB.NET] Einfache Ähnlichkeitssuche (SQL)
[C#] Pfad kürzen
[C#] IsPositiveInteger as Extension Method
[C#] Datum und Zeit als String
[C#] String spiegeln
[VB.NET] String spiegeln
[C#] Erweiterung für Stringumwandlungen
[C#] Image in string wandeln und zurück
[C#] Strings komprimieren und dekomprimieren
[C#] CamelCase in Title Case konvertieren
[C#] Text zentriert in die Konsole schreiben
[VB.NET] Strings komprimieren und dekomprimieren
[C#] Fuzzy Suche
[VB.NET] Rows eines DataGridView in ein String-Array konvertieren
[C#] kontrolliert ob String eine gültige GUID ist
[C#] HTML aus einem String entfernen
[C#] byte-String in byte wandeln
[C#] Formelevaluierung aus RPN Form
[C#] Erzeugen eines zufälligen Strings
[C#] mehrfach vorkommende Worte entfernen
[C#] Determines whether the specified input is numeric
[C#] Prozentual Textvergleichen
[C#] doppelte Leerzeichen aus einem String entfernen
[C#] Zählt wie oft ein String in einem String vorkommt.
[C#] String kürzen ohne ein Wort abzuschneiden
[C#] String auf erlaubte Zeichen prüfen
[C#] Austauch von kritischen Zeichen in einem String...
[VB.NET] String in Byte Array und zurück wandeln
[C#] Gross- Kleinbuchstaben in String schnell zählen
[VB.NET] Listen, Arrays, Strings konvertieren
[C#] CRC32-Hash eines Strings
[VB.NET] CRC32-Hash eines Strings
[C#] Größe eines Strings berechnen
[VB.NET] String Splitten
[C#] Capitalize the first letter of every word
[VB.NET] Textdatei lesen und schreiben (String, StringArray, etc...)
[C#] Text2Bitmap (String in Bild umwandeln)
[C#] Double in String umwandeln (mit InvariantCulture)
[C#] String in Double umwandeln (mit InvariantCulture)
[C#] Convert MAC string to byte array
[C#] Reverse String
[C#] Stellt fest ob ein String ein Palindrom ist
[VB.NET] String umkehren
[C#] Letztes Wort aus einem String ermitteln
[C#] Erstes Wort aus einem String ermitteln
[VB.NET] List all controls by using the name of the controls
[C#] Alle E-Mail Adressen aus einem String bzw. Text filtern
[C#] StringSplitter
[C#] Fundstelle eines Suchbegriffs markieren
[C#] Initialisiert alle String-Properties
[C#] MD5 Verschlüsselung
[C#] HTML Tags aus String entfernen
[C#] Geschachtelte Methode zur String-Bearbeitung
[C#] Byte Größenangaben als String formatieren (KB, MB, GB, ...)
[VB.NET] Permutation nachweisen
[C#] Implode und Trim für String-Enumerationen (Extension Method)
[C#] String zu MD5
[C#] Tabulatorzeichen durch Leerzeichen ersetzen
[C#] String in einzelne Wörter aufteilen und Wörter zählen
[VB.NET] Passwortgenerator
[C#] Namen von Klassenmember als String ermitteln
[C#] IncreaseString
[VB.NET] String uebers Netzwerk oder Internet and einen PC senden
[C#] String to char Tarnung
[C#] C# XOR Crypt
[C#] String-Formatierung für Faule: Erweiterungsmethode
[C#] Darstellung eines ASP.NET Steuerelementes als HTML-String
[C#] Wie ToString() welche mit null-Strings umgehen kann

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.