2014-06-06 9 views
11

Kann ich das in einer Klasse machen?MVC: Kann ich ModelState innerhalb der Klasse außerhalb des Controllers verwenden?

... 
    using System.Web.Mvc; 
    ... 

    public static class aaa 
    { 

     public static test() { 

     if (something) ModelState.AddModelError("", "test"); 
     } 

    } 

innen Controller Aufruf:

...

public class mycontroler { 

    public void Index() { 
      .... 
      aaa.test(); 
      .... 
    } 

} 

ist es möglich? Ich möchte den Code in einer Klasse in einem anderen Teil des Controllers steuern.

Antwort

15

Sie können Ihr Modell Zustand um, wie dies passieren:

public static void test(ModelStateDictionary ModelState) 
{ 
    if (something) ModelState.AddModelError("", "test"); 
} 

und rufen aus Ihrem Controller:

aaa.test(ModelState); 
+0

ja, aber sollte nicht das Wörterbuch oder ref, und der Compiler nicht zulassen, oder? – David

+0

@David Sorry, ich verstehe nicht, was Sie sagen? – DavidG

+0

Entschuldigung, ich habe getan, was Sie gesagt haben, aber ich muss den Parameter als Referenz übergeben, weil innen ändern, oder als out-Parameter, tun, dass der Compiler mir einen Fehler nicht erlauben, Ref oder out in den Parameter in diesem zu setzen Objekt – David

1

Nein, das geht nicht. Was Sie im Controller referenzieren, ist seine Eigenschaft, keine Klasse. Sie können es weiterhin an die Methode übergeben, die als Argument aufgerufen wird.

+1

Ich habe den Fehler innerhalb Zeichenfolge, und ich werde die Nachricht in der Steuerung erhalten, nachdem Wenn die Nachricht leer ist, wird kein Fehler angezeigt, ansonsten werde ich AddModelError in den Controller einfügen. – David

Verwandte Themen