2016-07-27 2 views
-1

Wenn ich eine Zeichenfolge gespeichert habe, wie kann ich diese Zeichenfolge als Teil einer Objektreferenz verwenden?Wie kann ich eine Zeichenfolge konvertieren, um sie als Objekt/Modellreferenz/Adresse in einem MVC-Controller zu verwenden?

Zum Beispiel, wenn ich einen Feldnamen als String gespeichert haben, wie kann ich diese Zeichenfolge verwenden, wenn ich das Feld in einer Tabelle bin Referenzierung: Man denke

+0

Was ist Tabellenname? Eine einfache Klasse? Oder eine DataRow? – rene

+0

Nur eine Klasse/Modell – Rob

Antwort

2

Wenn Sie wirklich

string thisismystring = fieldname 

if (tablename.(this is where i want to use my string as a reference to the appropriate field) > 1) 
{ 
    Do something here 

} 

Dank Es ist erforderlich, dass Sie die Reflektion verwenden können, indem Sie GetProperty für den Typ Ihres Modells aufrufen und dann GetValue für die PropertyInfo aufrufen, die zurückgegeben wurde. GetValue nimmt eine Instanz Ihres Modelltyps.

Erkennen Sie, dass der zurückgegebene Wert ein Objekt ist. Um es zu vergleichen, müssen Sie es vielleicht konvertieren oder konvertieren, aber das hängt von Ihrer Logik ab.

// if this is your model ... 
public class MyModel 
{ 
    public string FieldName {get;set;} 
} 

// this is what your Controler method would look like 
public ActionResult Check(string fieldname, string fieldValue) 
{ 
    var tablename = new MyModel{ FieldName = "check"}; 
    var prop = typeof(MyModel).GetProperty(fieldname); 
    var value = prop.GetValue(tablename); 

    // do notice value is here an Object, so you might want to Convert or Cast if needed 
    if (value == fieldValue) 
    { 
     "equal".Dump(); 
    } 
    return View(tablename); 
} 

// and this is how your Controller method gets called 
Check("FieldName","check"); 

Beachten Sie, dass die Reflexion eine Leistungseinbuße hat.

+0

Danke für die Antwort, es scheint sehr verschlungen für was scheint wie eine sehr einfache Sache. Gibt es absolut keine Möglichkeit, meine Zeichenfolge einfach als Teil der Adresse zu verwenden? Ich meine, in meinem Controller gebe ich einfach ein Wort ein, um das Feld zu referenzieren, sagen wir, es wurde 'field1' genannt. Es scheint merkwürdig, dass es nicht möglich wäre, meine Zeichenfolge einfach zu verwenden, wenn meine Zeichenfolge "Feld1" in dieser Adresse enthält. – Rob

+1

In einem stark typisierten System können Sie keine dynamische Version haben. Es würde die Typsicherheit brechen. – rene

Verwandte Themen