2015-08-06 1 views
0

Я работаю на ASP.NET MVC веб-приложения, и у меня есть следующие в моей точки зрения (в основном таблицы, которые содержат Html.TextBox): -не может поместить @ Html.TextBox внутри ячейки таблицы

@{ 


      int i = 0; 
    <div> 
     <table class="table table-striped table-bordered bootstrap-datatable "> 
      <thead> 
       <tr> 
        <th>IP Address @Html.EditorFor(model=>model.IsIPUnique) | @Html.DisplayNameFor(model=>model.IsIPUnique)</th><th>MAC Address @Html.EditorFor(model=>model.IsMACUnique) | @Html.DisplayNameFor(model=>model.IsMACUnique)</th> 
        <th>NIC</th><th>Gateway</th> 
        <th>Network</th><th>SubNetMask</th> 
        <th>DHCP Enabled</th><th>DHCP Server</th> 


       </tr> 
      </thead> 
      <tbody> 
        @if(Model.NetworkInfo2 == null || Model.NetworkInfo2.Count() == 0) 
      { 

       Model.NetworkInfo2.Add(new NetworkInfo() { ISDHCP = "false" }); 
      } 
    @foreach(var s in Model.NetworkInfo2) 
{ 
       <tr> 
        <td> @Html.TextBox("NetworkInfo2[" + i.ToString() + "].IPADDRESS", s.IPADDRESS) 
    @Html.ValidationMessage("NetworkInfo2[" + i.ToString() + "].IPADDRESS")</td> 
        <td> @Html.TextBox("NetworkInfo2[" + i.ToString() + "].MACADDRESS", s.MACADDRESS) 
    @Html.ValidationMessage("NetworkInfo2[" + i.ToString() + "].MACADDRESS")</td> 
        <td> @Html.TextBox("NetworkInfo2[" + i.ToString() + "].NICNAME", s.NICNAME) 
    @Html.ValidationMessage("NetworkInfo2[" + i.ToString() + "].NICNAME")</td> 
        <td> @Html.TextBox("NetworkInfo2[" + i.ToString() + "].GATEWAY", s.GATEWAY) 
    @Html.ValidationMessage("NetworkInfo2[" + i.ToString() + "].GATEWAY")</td> 
        <td> 
          @Html.TextBox("NetworkInfo2[" + i.ToString() + "].NETWORK", s.NETWORK) 
    @Html.ValidationMessage("NetworkInfo2[" + i.ToString() + "].NETWORK") 
        </td> 
        <td> @Html.TextBox("NetworkInfo2[" + i.ToString() + "].IPNETMASK", s.IPNETMASK) 
    @Html.ValidationMessage("NetworkInfo2[" + i.ToString() + "].IPNETMASK") </td> 

       <td> @Html.TextBox("NetworkInfo2[" + i.ToString() + "].DHCPSERVER", s.DHCPSERVER) 
    @Html.ValidationMessage("NetworkInfo2[" + i.ToString() + "].DHCPSERVER")</td> 
         <td> @Html.CheckBox("NetworkInfo2[" + i.ToString() + "].ISDHCP", bool.Parse(s.ISDHCP)) 
    @Html.ValidationMessage("NetworkInfo2[" + i.ToString() + "].ISDHCP")</td> 
       </tr> 

     i++; 
    } 
      </tbody> 
     </table> 




    </div> 
     } 

результат на применение этого было не очень удобно, так как текстовые поля будут размещены OutSite ячеек таблицы следующим образом: -

enter image description here

ответ

0

Вы можете сделать вашу жизнь немного легче, используя для loop вместо foreach, чтобы создать таблицу для стартеров.

<div> 
    <table class="table table-striped table-bordered bootstrap-datatable "> 
     <thead> 
      <tr> 
       <th>IP Address @Html.EditorFor(model => model.IsIPUnique) | @Html.DisplayNameFor(model => model.IsIPUnique)</th> 
       <th>...</th> 
      </tr> 
     </thead> 
     <tbody> 
      @if (Model.NetworkInfo2 == null || Model.NetworkInfo2.Count() == 0) 
      { 
       Model.NetworkInfo2.Add(new NetworkInfo() { ISDHCP = "false" }); 
      } 
      @for (int i = 0; i < Model.NetworkInfo2.Count(); i++) 
      { 
       <tr> 
        <td> 
         @Html.TextBoxFor(a => a.NetworkInfo2[i].IPADDRESS) 
         @Html.ValidationMessageFor(a => a.NetworkInfo2[i].IPADDRESS) 
        </td> 
       </tr> 
       <tr> 
        ... 
       </tr> 
      } 
     </tbody> 
    </table> 
</div> 

но ваш вопрос с TextBox не находясь внутри <td> это вопрос CSS .. вы можете иметь правое поле. Вы должны использовать инспектора F12, чтобы узнать, какое свойство css вызывает все, чтобы сдвинуть вправо. или добавить к ним отрицательный правый запас. я обычно добавить form-control класс к входам, если я использую самозагрузку

@Html.TextBoxFor(a => a.NetworkInfo2[i].IPADDRESS, new { @class="form-control" }) 
+0

проблему, что мой NetworkInfo имеет типа ICollection и не IList так нет индексатора для него .. вот почему я делаю это так, как я укажите .. –

+0

Вы определили его как 'ICollection' или EF? – JamieD77

+0

Я использую первый подход DB, и все сгенерированные классы используют Icollection –