2010-05-29 7 views
1
<div id="4591" > 
      <input type="text" id="Title1" name="Title1" value="a" /> 
      <input type="submit" name="button" value="Save" /> </div> 

<div id="4592" > 
      <input type="text" id="Title2" name="Title2" value="a" /> 
      <input type="submit" name="button" value="Save" /> </div> 

    <div id="4593" > 
      <input type="text" id="Title3" name="Title3" value="a" /> 
      <input type="submit" name="button" value="Save" /> </div> 

Ceci est la version de copie de la source html générée par le navigateur qui indique clairement que je génère les champs dynamiques sur la page. nom dans la zone de texte correspond au champ de la base de données. Après avoir appuyé sur l'un des boutons de sauvegarde, comment envoyer le nom et la valeur de la zone de texte particulière à l'action du contrôleur à mettre à jour.asp.net mvc obtention de l'ID du bouton cliqué

Répondre

10

Donnez votre boutons submit un autre nom:

<div id="4591"> 
    <input type="text" id="Title1" name="Title1" value="a" /> 
    <input type="submit" name="button4591" value="Save" /> 
</div> 

<div id="4592"> 
    <input type="text" id="Title2" name="Title2" value="a" /> 
    <input type="submit" name="button4592" value="Save" /> 
</div> 

<div id="4593"> 
    <input type="text" id="Title3" name="Title3" value="a" /> 
    <input type="submit" name="button4593" value="Save" /> 
</div> 

Et puis dans votre action de contrôleur vérifier les paramètres de la requête. Vous verrez qu'un paramètre avec le nom du bouton cliqué sera passé:

[HttpPost] 
public ActionResult Index() 
{ 
    string id = Request.Params 
     .Cast<string>() 
     .Where(p => p.StartsWith("button")) 
     .Select(p => p.Substring("button".Length)) 
     .First(); 
    return View(); 
} 
+0

bien certainement, je dirais une merveilleuse solution – maztt

+0

idée très soignée. +1 pour ce faire avec Linq. Une seule question: les propriétés id et name sont-elles nécessaires ou suffiraient-elles? – draconis

+0

Le nom @draconis est suffisant. – refactor

Questions connexes