2010-12-09 4 views
0

Salut J'ai la classe suivante qui donne accès à un fichier xml:Mise à jour d'un fichier XML à partir des champs de formulaire en C# .net

public class AppConfig 
{ 
    public string AppConfigPath = "~/admin.config.xml"; 
    XmlDocument SiteConfig = new XmlDocument(); 

    public string getAppConfigParam(string param) 
    { 

     SiteConfig.Load(HttpContext.Current.Server.MapPath(AppConfigPath)); 
     string reqParam = SiteConfig.SelectSingleNode("//cmsAppConfig")[param].InnerText; 
     return reqParam; 
    } 

    public void setAppConfigParam(string paramTitle, string paramValue) 
    { 
     SiteConfig.Load(HttpContext.Current.Server.MapPath(AppConfigPath)); 

     XmlNodeList ConfigNodes = SiteConfig.SelectSingleNode("//cmsAppConfig").ChildNodes; 

     foreach (XmlNode node in ConfigNodes) 
     { 
      if (node.Name == paramTitle) 
      { 
       node.InnerText = paramValue; 
      } 
     } 

     SiteConfig.Save(HttpContext.Current.Server.MapPath(AppConfigPath)); 
     HttpContext.Current.Response.Redirect(HttpContext.Current.Request.RawUrl); 
    } 

} 

J'utilise la classe dans l'événement suivant pour mettre à jour certains paramètres de l'application, mais seul le premier noeud qui est le globalskin est mis à jour.

protected void btnSaveAppConfig_Click(object sender, EventArgs e) 
{ 

    if (IsValid) { 
     AppConfig myAppConfig = new AppConfig(); 
     myAppConfig.setAppConfigParam("globalskin", drpAppTheme.SelectedValue.ToString()); 
     myAppConfig.setAppConfigParam("homefeedsurl", txtNewsFeedUrl.Text.Trim()); 
     myAppConfig.setAppConfigParam("homefeedstitle", txtNewsFeedTitle.Text.Trim()); 
    } 
} 

Quels changements dois-je faire pour apporter la modification à tous les champs? Merci pour votre temps.

+0

L'état de docs "La méthode Initialize doit être appelée avant que cette méthode puisse être utilisée." ... l'avez-vous fait? http://msdn.microsoft.com/en-us/library/ee784825(v=CS.20).aspx –

Répondre

1

Je soupçonne que cette ligne dans votre méthode setAppConfigParam:

HttpContext.Current.Response.Redirect(HttpContext.Current.Request.RawUrl); 

est à l'origine d'une redirection immédiate, de sorte que les deux autres appels à setAppConfigParam même jamais été exécutée.

+0

Merci beaucoup Jim. Cela a résolu le problème – XGreen

0

Est-ce que ce fichier xml est votre config web (ou 'fichier critique')? Si c'est le cas, alors lorsque vous enregistrez le fichier de configuration, il redémarre votre appdomain. Y a-t-il une raison pour laquelle vous traitez le fichier de configuration comme un simple document XML? S'il s'agit en fait d'un fichier de configuration .net, try this method ...

+0

Ce fichier n'est pas le fichier de configuration de l'application .net. c'est juste un fichier xml normal qui contient des informations sur la peau de l'utilisateur, le chemin des flux de nouvelles, etc. – XGreen

Questions connexes