4 Stimmen

Remote Validation reicht keine Daten an die Aktion weiter.

Ich habe das Modell:

public class MyModel
...Felder
[Remote(ActionName, ControllerName)]
public string SomeNumber { get; set; }
..Felder

Und habe eine Aktion im ControllerName Controller:

public JsonResult ActionName(string someNumber)
{...}

Aber wenn die Aktion aufgerufen wird, ist der Parameter someNumber immer null. Und wenn ich versuche, es zu debuggen, erhalte ich

GET /ControllerName/ActionName?MyModel.SomeNumber=34189736

Wie kann ich das zum Laufen bringen? (Ich kann nicht das gesamte Modell MyModel übergeben und kann den Namen des Feldes MyModel.SomeNumber nicht in meiner Ansicht ändern)

UPD. Eingabe in meiner Ansicht:

UPD gelöst! :) Ich erstelle ein neues Modell mit einem einzelnen Feld SomeNumber und verwende ein Präfix:

SomeNumber([Bind(Prefix = "MyModel")]MySingleFieldModel model)

6voto

Pandagrrl Punkte 106

Wenn Sie verschachtelte ViewModels verwenden, müssen Sie das übergeordnete ViewModel als Argument in Ihrer Validation-Aktion akzeptieren. Zum Beispiel:

public class ParentViewModel
{
    public UserViewModel User {get; set; }

    //....
}

public class UserViewModel 
{
    [Remote("UniqueUsername", "Validation")]
    public string Username { get; set; }

    //....
}

In der ValidationController:

public class ValidationController : Controller
{ 
     public JsonResult UniqueUsername(ParentViewModel Registration) 
     {
        var Username = Registration.User.Username; //Zugriff auf die Eigenschaft des untergeordneten ViewModel

        //Validieren und JsonResult zurückgeben

     }
}

2voto

CoffeeCode Punkte 4266

Versuchen Sie, Ihr Modell als Parameter zu verwenden. Damit es den Wert daran binden kann.

public JsonResult ActionName(MyModel model)
{
    //...
    model.SomeNumber;
    //...

   return Json(validationResult, JsonRequestBehavior.AllowGet)
}

0voto

Adam Jasper Punkte 1
public JsonResult ActionName(string SomeNumber)
{...}

Ich denke, dass du möglicherweise die Groß- und Kleinschreibung deines Eingabeparameters beachten musst.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X