<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.aspnetzone.de/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tags 'ASP.NET MVC' and 'Tipps'</title><link>http://www.aspnetzone.de/search/SearchResults.aspx?o=DateDescending&amp;tag=ASP.NET+MVC,Tipps&amp;orTags=0</link><description>Search results matching tags 'ASP.NET MVC' and 'Tipps'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61120.2)</generator><item><title>ASP.NET MVC: Daten zur View Masterpage &amp;#252;bergeben</title><link>http://www.aspnetzone.de/blogs/peterbucher/archive/2009/03/28/asp-net-mvc-daten-zur-view-masterpage-bergeben.aspx</link><pubDate>Fri, 27 Mar 2009 23:03:00 GMT</pubDate><guid isPermaLink="false">ce930855-ae9b-4fa4-8077-06a76071cc6a:208955</guid><dc:creator>Peter Bucher</dc:creator><description>&lt;P&gt;Ich stand gerade vor der Aufgabe, die UserTimeline eines Twitter Accounts auf einer &lt;A href="http://www.asp.net/mvc/"&gt;ASP.NET MVC&lt;/A&gt; Masterpage anzuzeigen. &lt;BR&gt;Dabei muss die Masterpage irgendwie an die Daten kommen, die sie anzeigen will.&lt;/P&gt;
&lt;P&gt;Eine naive Suche bringt mich mit dem ersten Ergebnis sofort ans Ziel:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A title=http://www.google.com/search?oe=utf8&amp;amp;ie=utf8&amp;amp;source=uds&amp;amp;start=0&amp;amp;hl=de&amp;amp;q=asp.net+mvc+master+%2Bshow+data href="http://www.google.com/search?oe=utf8&amp;amp;ie=utf8&amp;amp;source=uds&amp;amp;start=0&amp;amp;hl=de&amp;amp;q=asp.net+mvc+master+%2Bshow+data"&gt;http://www.google.com/search?oe=utf8&amp;amp;ie=utf8&amp;amp;source=uds&amp;amp;start=0&amp;amp;hl=de&amp;amp;q=asp.net+mvc+master+%2Bshow+data&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;=&amp;gt; &lt;A href="http://www.asp.net/learn/MVC/tutorial-13-cs.aspx"&gt;Passing Data to View Master Pages&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Dort stellen sie zwei Möglichkeiten vor. &lt;BR&gt;Bei der ersten wird vorgeschlagen im Konstruktor jedes Controllers die benötigten Daten in das ViewData-Dictionary zu übergeben. &lt;BR&gt;Das wird natürlich mühsam und bei einer Änderung können alle Controller angefasst werden.&lt;/P&gt;
&lt;P&gt;Die zweite Möglichkeit schlägt einen abstrakten Basiscontroller vor, in dessen Konstruktor das ViewData-Dictionary gefüllt wirde. &lt;BR&gt;Eine gute Lösung und die Änderung findet an einer Stelle statt.&lt;/P&gt;
&lt;P&gt;Alle Controller müssen dann von dem abstrakten Controller erben, dabei wird jedesmal dessen Konstruktor ausgeführt und die Daten übergeben. &lt;BR&gt;Ein solcher Controller könnte bspw. so aussehen: &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;namespace&lt;/span&gt; Netkk.Controllers &lt;br /&gt;{ &lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;abstract&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;class&lt;/span&gt; ApplicationController : Controller &lt;br /&gt;    { &lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;public&lt;/span&gt; ApplicationController() { &lt;br /&gt;            ITwitterRepository repository &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;new&lt;/span&gt; TwitterRepository(); &lt;br /&gt;            IEnumerable&amp;lt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;string&lt;/span&gt;&amp;gt; formattedTweets &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;=&lt;/span&gt; repository.GetFormattedUserTimeLine( &lt;br /&gt;                &lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;"username"&lt;/span&gt;, &lt;br /&gt;                &lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;"password"&lt;/span&gt;, &lt;br /&gt;                4); &lt;br /&gt;&lt;br /&gt;            ViewData[&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;"userTimeLine"&lt;/span&gt;] &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;=&lt;/span&gt; formattedTweets; &lt;br /&gt;        } &lt;br /&gt;    } &lt;br /&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;Und im Masterpage View kann kann über das Dictionary darüber iteriert werden: &lt;BR&gt;&lt;BR&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;&amp;lt;% &lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;foreach&lt;/span&gt;(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;string&lt;/span&gt; formattedTweet &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;in&lt;/span&gt; (IEnumerable&amp;lt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;string&lt;/span&gt;&amp;gt;)ViewData[&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;"userTimeLine"&lt;/span&gt;]) { &lt;br /&gt;       %&amp;gt; &lt;br /&gt;        &amp;lt;p&amp;gt; &lt;br /&gt;            &amp;lt;%= formattedTweet %&amp;gt; &lt;br /&gt;        &amp;lt;/p&amp;gt; &lt;br /&gt;       &amp;lt;% &lt;br /&gt;   } &lt;br /&gt;%&amp;gt; &lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;Ist dagegen etwas auszusetzen oder gibt es eine bessere Lösung?&lt;/P&gt;</description></item></channel></rss>