2009-09-08 3 views
0

Salut J'ai la vue suivante qui obtient les valeurs pour les champs de formulaire à partir d'un viewdata qui contient une instance d'une classe ApplicationSettingEntity. la classe ApplicationSettingEntity contient une instance d'une classe machineentity comme l'un des attributs. Le formulaire est rempli par des valeurs de item.Id item.Key item.Machine.Nameformulaire ne retourne pas toutes les valeurs mises à jour lors de l'édition

Lorsque je modifier les valeurs de la forme renvoie les valeurs mises à jour pour item.Id et item.Key mais pas item.Machine. Nom

J'ai inspecté la valeur de item.Machine.Name car j'hydrate le formulaire et Il définit la valeur de la zone de texte correctement mais les données postées pour item.Machine sont nulles quand j'appuie sur le bouton de sauvegarde. Qu'est-ce que je fais mal?

 <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 

     <%@ Import Namespace="AppSettings.Web.Models" %> 
     <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
      Edit Application Setting 
     </asp:Content> 
     <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
      <strong style="color: Black;"> 
      <div> 
       <% if (ViewData["ApplicationSetting"] != null) 
        { 
         var item = (ApplicationSettingEntity)ViewData["ApplicationSetting"]; 
       %> 
         <%=Html.ActionLink("Back to List", "Index", 
                 new 
                  { 
                   controller = "ApplicationSettings", 
                   Applications = item.Id, 
                   Machines = item.Machine.Id 
                  })%> 
         </div> 
         <%=Html.ValidationSummary("Edit was unsuccessful. Please correct the errors and try again.")%> 
         <% 
          using (Html.BeginForm((bool)ViewData["IsAdd"] ? "SaveAdd" : "SaveEdit", "ApplicationSettings")) 
          {%>   
           <fieldset> 
            <legend><strong>Application Name:</strong> 
            </legend> 
            <p> 
             <label for="Id" style="font-weight: bold;"> 
              Application Setting Id:</label> 
             <%=Html.TextBox("Id", item.Id)%> 
             <%=Html.ValidationMessage("Id", "*")%> 
            </p> 
            <p> 
             <label for="Key" style="font-weight: bold;"> 
              Application Setting Key:</label> 
             <%=Html.TextBox("Key", item.Key, new {style = "width:400px;"})%> 
             <%=Html.ValidationMessage("Key", "*")%> 
            </p> 
            <p> 
             <span style="font-weight: bold;">Machine Name: </span>    
             <%=Html.TextBox("MachineName", item.Machine.Name)%> 

            </p> 
            <p> 
             <input type="submit" value="Save" /> 
            </p> 
           </fieldset> 
           <% 
          }%> 
         <div> 
          <%=Html.ActionLink("Back to List", "Index", 
                  new 
                   { 
                    controller = "ApplicationSettings", 
                    applicationId = item.Application.Id, 
                    machineId = item.Machine.Id 
                   })%> 
         </div> 
         <% 
       }%> 
     </asp:Content> 

Répondre

3

Vous obtenez la valeur du poste dans l'élément MachineName de la collection de forme, parce que c'est la première PARAM Html.TextBox

Questions connexes