Wenn ein Controller eine Ansicht basierend auf einem Modell rendert, können Sie die Eigenschaften aus der ViewData-Auflistung mithilfe des Indexers abrufen (dh ViewData ["Property"]). Ich habe jedoch eine gemeinsame Benutzersteuerung, die ich versuchte mit den folgenden zu nennen:Asp.net MVC Benutzersteuerung ViewData
return View("Message", new { DisplayMessage = "This is a test" });
und auf meiner Nachricht Kontrolle hatte ich dies:
<%= ViewData["DisplayMessage"] %>
Ich würde denken, dies richtig die Displaymessage machen würde, NULL wird jedoch zurückgegeben. Nach einer starken Dosis um Bastelei, habe ich endlich eine „Message“ Klasse, um stark zu meinem Benutzer Steuerart:
public class MessageControl : ViewUserControl<MessageData>
und jetzt dieser Aufruf funktioniert:
return View("Message", new MessageData() { DisplayMessage = "This is a test" });
und kann wie angezeigt dies:
<%= ViewData.Model.DisplayMessage %>
Warum sollte die Displaymessage-Eigenschaft nicht auf das Viewdata (dh Viewdata [ „Displaymessage“].) hinzugefügt werden Sammlung ohne starke Typisierung der Benutzer die Kontrolle? Ist das Absicht? Wäre es nicht sinnvoll, dass ViewData einen Schlüssel für "DisplayMessage" enthält?