2014-11-10 8 views
7

Wenn ich gerade die Editorfelder lösche, die der Benutzer nicht in der Ansicht sehen möchte, werden die Daten null, ich möchte die Daten behalten, aber ich möchte nicht, dass der Benutzer sie bearbeitet.Wie @ Html.EditorFor unsichtbar machen?

<div class="editor-label"> 
       @Html.LabelFor(model => model.Name) 
      </div> 
      <div class="editor-field"> 
       @Html.EditorFor(model => model.Name) 
       @Html.ValidationMessageFor(model => model.Name) 
      </div> 


      <div class="editor-label"> 
       @Html.LabelFor(model => model.parent_directory) 
      </div> 
      <div class="editor-field"> 
       @Html.DisplayFor(model => model.parent_directory) 
      </div> 

      <p> 
       <input type="submit" value="Add" /> 
      </p> 

Das @ Html.EditorFor ich mich beziehe, ist model.parent_directory. Kann jemand eine Lösung vorschlagen, die js nicht einschließt? Ich habe versucht, DisplayFor anstelle von EditorFor zu verwenden, und ich bekomme immer noch einen Nullwert.

+0

Warum benutzen Sie kein verstecktes Feld? – Haris

+0

Ich weiß nicht wie. –

+0

etwas wie dies vielleicht, @ Html.HiddenFor (m => m.hiddevalue), hilft das beantworten? @DDavid – Haris

Antwort

9

Bitte werfen Sie einen Blick auf diese MSDN-Seite verwenden können. http://msdn.microsoft.com/en-us/library/system.web.mvc.html.editorextensions.editorfor(v=vs.118).aspx

Entsprechend dieser Seite können Sie HTML-Attribute als Parameter aus offensichtlichen Gründen nicht angeben. Denn EditorFor kann ein input Feld oder select sein und ihre HTML-Attribute unterscheiden sich voneinander.

Wenn Sie es nur vorübergehend ausblenden und es später dem Benutzer anzeigen möchten, können Sie verwenden. Sie können mehr über TextBoxFor Überlastungen bei http://msdn.microsoft.com/en-us/library/system.web.mvc.html.inputextensions.textboxfor(v=vs.118).aspx

zB herausfinden:

@Html.TextBoxFor(model => model.Name, new {style = 'display:none'}) 

wenn Sie diese Angaben während des gesamten Prozesses verborgen halten möchten, können Sie @Html.HiddenFor

zB

@Html.HiddenFor(model => model.Name) 
5

Verwenden versteckte Felder hierfür:

@Html.HiddenFor(model => model.Name) 
1

Wenn Sie die Felder angezeigt werden sollen und erlauben nicht zu bearbeiten Nutzer, man kann sie nur lesen machen ..

@Html.EditorFor(model => model.Name, new {@readonly = "readonly" }) 

Wenn Sie wollen nicht die Felder Benutzer zeigen und müssen nur Daten halten Sie

@Html.HiddenFor(model => model.Name) 
1
verwenden

Sie können dies tun mit:

@Html.Editor("WContractID", new { htmlAttributes = new { @class = "form-control", @style = "display: none" } }) 
+0

Formatieren Sie Ihren Codeabschnitt und geben Sie eine Erklärung zu Ihrer Antwort. Bitte beachten Sie, dass Ihre Antwort für diese Frage ähnlich aussieht wie eine angenommene/akzeptierte Antwort. Verbessere deine Antwort. – mmushtaq

+0

Diese Antwort widerspricht der akzeptierten Antwort und sollte die akzeptierte Antwort sein. – mxmissile