2010-06-20 4 views
1

J'ai un simple objetquestion FormCollection rapide ASP.NET MVC2

public class SomeObject 
{ 
    public Int32 id { get; set; } 
    public string name { get; set; } 
} 

Dans une vue fortement typé je laisse l'utilisateur de modifier SomeObject.name, lorsque le formulaire est affiché la méthode de réception ne voit pas SomeObject .id dans FormCollection (il voit SomeObject.name). Dois-je réellement placer chaque propriété d'objet dans le formulaire pour pouvoir y accéder lorsque le formulaire est posté?

Quelle est la meilleure pratique, dois-je simplement insérer des champs cachés pour chaque propriété que je ne prévois pas de laisser l'utilisateur éditer? peut-être que je devrais placer l'objet entier dans le ViewData?

Merci

Répondre

1

FormCollection contenant uniquement les propriétés qui ont été affichées soit par des champs de texte ou des champs cachés. Donc, si vous avez besoin d'utiliser la propriété Id dans votre action de contrôleur, vous devez l'inclure dans votre formulaire. En fonction de ce que vous faites dans l'action de votre contrôleur, vous pouvez ou non l'inclure. Il n'est pas nécessaire d'inclure des champs cachés pour chaque propriété.

Habituellement le Id est suffisant car il vous permet de récupérer plus tard l'objet de votre magasin de données étant donné cet ID.

0

À quoi ressemble votre méthode d'action à laquelle vous envoyez le formulaire? Si votre méthode pour gérer les requêtes GET prend id, si votre méthode POST prend également id et que vous utilisez la méthode auxiliaire BeginForm sans aucun des paramètres surchargés, la méthode form prendra l'id comme paramètre et vous n'aurez pas besoin de s'inquiéter d'inclure des champs cachés pour l'identifiant lui-même.