2017-09-25 2 views
0

J'ai un code comme ceci: ModèleASP.NET MVC 5 Modèle retour Model Editor vide

public class Matrix 
{ 
    public ValidInt[][] Data; 
    public int Width { get; set; } 
    public int Height { get; set; } 

    public Matrix(int w, int h) 
    { 
     Width = w; 
     Height = h; 
     Data = new ValidInt[w][]; 
     for (int i = 0; i < w; i++) 
      this.Data[i] = new ValidInt[h]; 
    } 

    public class ValidInt 
    { 
     [Range(0, 8, ErrorMessage = "Enter proper number")] 
     public int Value { get; set; } 
    } 
} 

Puis-je créer une nouvelle matrice et passer à la vue:

[HttpGet] 
    public ActionResult Fill(int w, int h) 
    { 
     Matrix matr = new Matrix(h, w); 
     return View(matr); 
    } 

    [HttpPost] 
    public ActionResult Fill(Matrix matr) {...} 

En vue J'utilise

@model Mondrian.Models.Matrix 
... 
@using (Html.BeginForm("Fill", "Picture", FormMethod.Post)) 
    { 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary() 

@for (int column = 0; column < Model.Data.Length; column++) 
     { 
      <tr> 
       @for (int row = 0; row < Model.Data[column].Length; row++) 
       { 
        <td>@Html.EditorFor(x => Model.Data[column][row].Value)</td> 
       } 
      </tr> 
     } 
</table> 
    <button type="submit">Submit</button> 

} 

Mais quand j'appuie sur le bouton soumettre, il entre dans ma méthode POST, mais le paramètre Matrix passé est vide et est créé avec le constructeur par défaut. Je veux juste passer Matrix à voir, puis obtenir des données de l'utilisateur, POST il et travailler avec des données entrées. Qu'est-ce que je fais mal?

+0

Est-ce que la déclaration 'Form' peut être partagée dans la vue? Et aussi la méthode post action où vous soumettez le formulaire? –

+0

Note de côté: vous avez un même message d'erreur pour différentes propriétés –

+0

Veuillez indiquer votre méthode d'action pour 'HttpPost'. Que se passe-t-il ici? – ironstone13

Répondre

0

Eh bien, résolu avec l'ajout

{get;set} 

à ma propriété de données.