2009-04-20 12 views
0
verschieben

Ich überarbeite eine Webanwendung, die mit früheren Versionen von Asp.Net MVC erstellt wurde, wobei alle Ansichten jeweils zwei Codebehind-Dateien enthalten.Partielle Seiteneigenschaft in Ansicht ohne Code hinter

Auch wenn die Ansichten richtig funktionieren, möchte ich beginnen, den gesamten Code hinter Dateien zu entfernen, da die meisten von ihnen leer sind.

Es gibt nur wenige von ihnen, die Eigenschaften wie dies in dem Code-Behind haben:

public partial class List { 
    public Message NewMessage { get { return new Message(); } } 
} 

Bevor sie vollständig zu entfernen (ich weiß, das Verfahren bezieht sich nicht auf die Ansichten) wie kann ich sie in der einzigen Seite replizieren aspx oder ascx? Ich habe gerade versucht, die öffentlichen Methoden in <%%> Tags zu kopieren, aber das funktioniert nicht.

Antwort

3

Darf ich fragen, warum Sie diesen Ansatz überhaupt verwendet haben? Ich denke, Sie könnten das gleiche erreichen, indem Sie Ihre View stark typisiert, und übergeben Sie die Nachricht als View 's Model.

Inherits="System.Web.Mvc.View<Message>" 

Wenn Sie bereits ein stark View getippt haben, können Sie eine benutzerdefinierte Klasse in Ihrer Klassenbibliothek machen, den Raum für Ihre Nachricht hat beispiel

public class ModelWithMessage { 
    public Message Message { get; set; } 
    public Object Model { get; set; } 
    public ModelWithMessage(Message Message, Object Model) { 
     this.Message = Message; 
     this.Model = Model; 
    } 
} 

Sie können natürlich diese Art generische machen auch, ein ModelWithMessage<T> Konstrukt zuzulassen und zu vermeiden, den Model zu dem Typ zu werfen, den Sie benötigen.

Eine andere Möglichkeit wäre, TempData zu verwenden. In der Controller setzen

TempData["Message"] = "Hello world!"; 

Dann in Ihrem View Sie die Nachricht schreiben, einfach mit

<%= TempData["Message"] %> 

welcher Ansatz Sie wählen, hängt davon ab, was Ihre Message-Klasse enthält.

0

Sie haben beantwortet fast dies selbst dort, wie Sie sagte: ‚Ich weiß, dass das Verfahren beziehen sich nicht auf die Ansichten‘ :)

Zuerst habe ich diese Methoden, um den Controller-Klassen bewegen würde und geben alle erforderlichen Daten Wenn Sie alle Funktionen in Ihren Code-Behind-Dateien entfernt haben und die Trennung wieder sauber ist, können Sie die Codebehind-Dateien aus Ihren Ansichten entfernen.