2014-03-06 12 views
17

Ich kann die Breite oder Spalten in atextarea nicht festlegen. Zeilen/Höhe funktioniert gut. Kann mir bitte jemand helfen, danke!TextAreaFor Breite kann nicht festgelegt werden

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    @Html.ValidationSummary(true) 
    @Html.TextAreaFor(model => model.Comments, new {cols=60, rows=10}) 
    @Html.HiddenFor(model => model.UserName, new { UserName = @User.Identity }) 

    <div class="form-group"> 
     <div class="col-md-10"> 
      <input type="submit" value="Submit Feedback" class="btn btn-default" /> 
     </div> 
    </div> 
} 

Alle Ratschläge oder Tipps würden sehr geschätzt werden!

dank

Die HTML gerendert ist (I entfernt Namen und den Wert Text aus Sicherheitsgründen:

<form action="/feedback/create" method="post"><input name="" type="hidden" value="">   
<textarea name="Comments" id="Comments" rows="10" cols="60"></textarea> 
<input name="UserName" id="UserName" type="hidden" value="" username="System.Security.Principal.WindowsIdentity">   

<div class="form-group"> 
     <div class="col-md-10"> 
      <input class="btn btn-default" type="submit" value="Submit Feedback"> 
     </div> 
</div> 

EDIT:

ich die Breite des Textbereich über CSS festlegen können aber nur zu einem bestimmten exten (vielleicht 15% des Bildschirms)

+0

Was ist das gerenderte HTML in der Seite? –

+0

ich die Frage aktualisiert, um die HTML- – MGot90

Antwort

35

so Ich habe herausgefunden, dass dies ein Problem mit Bootstrap ist, das in ein ASP.NET MVC5-Projekt importiert wurde. Die Antwort ist jedoch einfach. Setzen Sie einfach auch CSS

max-width: 1000px; 
    width: 1000px; 

Das behebt es für alle Datentypen. TextArea-, Eingang usw.

**** UPDATE 2014.08.26 ****

Changed meine Antwort auf einen Kommentar gepostet zu reflektieren. Verwenden Sie Prozentsätze anstelle von px, um die Reaktionszeit zu erhalten. Die CSS sollte sein:

max-width: 100%; 
    width: 100%; 

**** UPDATE 2016.08.29 ****

Das 3. Klasse formSteuer die gilt das Hinzufügen mit Bootstrap wurde behoben

 @Html.TextAreaFor(x => x.Note, new { @class = "form-control", rows = "3" }) 
+1

Daumen hoch, wenn das auch für dich funktioniert! – MGot90

+0

Es funktionierte auch für mich. Ich denke nicht, dass es die perfekte Lösung ist, aber es ist die einzige, die ich bisher gefunden habe. Und ich habe gesucht .... –

+2

@ MikeGO10590: Überprüfen Sie das: Wenn Sie max-width zu 100% anstelle von 1000px ändern, erhalten Sie die Bootstrap-Größenanpassung Funktionalität zurück. Sie müssen nicht einmal die Breite einstellen. –

1

Ihr Code funktioniert gut für mich. Überprüfen Sie die fiddle demo

Das Problem würde mit style=width:something

besser, die CSS überprüfen und versuchen, mit Hilfe von Firebug/Chromkonsole

+0

Diese fast arbeitete zeigen aber er kann ich es nicht auf die volle Breite des div gesetzt! – MGot90

4

Sie beheben können eine Klasse Attribut hinzufügen:

@Html.TextAreaFor(model => model.Comments, new {cols=60, rows=10, @class="form-control" }) 
+0

Das hat fast funktioniert, aber ich konnte es nicht auf die volle Breite des div einstellen! – MGot90

+0

Wenn Sie die 'formkontrollierende Klasse zu Ihrem Textbereich hinzufügen, können Sie die Eingabe in seinem übergeordneten Container machen erweitern. Ich habe meine Antwort aktualisiert. –

+0

Ich habe versucht, dass (Code aus Bootstrap-API kopiert) und es maxes noch – MGot90

4

oben Styling hatte ich das gleiche Problem und fand das folgende Stück CSS in meiner Site.css die Ursache zu sein (was ich auf Kommentar).

/* Set width on the form input elements since they're 100% wide by default */ 
input, 
select, 
textarea { 
    max-width: 280px; 
} 
+0

wirklich guten Punkt enthalten. Ich habe nur Textare von dort entfernt und es hat funktioniert. –

+0

Oh danke danke danke danke !! Das war's! (Stupide Standard-Site.css!) Was wirklich frustrierend ist, ist, dass ich mir ziemlich sicher bin, dass ich das schon einmal getan habe und anscheinend vergessen habe. (D'OH!);) –

10

Dies scheint ein Fallback zu sein, um zu verhindern, dass die eingerahmten Ansichten Vollansichtsformulare erzeugen.

Nun aber wissen wir, dass es gesetzt ist, können wir es lokal entweder in einer Klasse oder direkt auf das Element überschreiben (im folgenden der Einfachheit halber dargestellt).

Der Schlüssel ist, sich daran zu erinnern, max-width zu setzen, um die in site.css sowie die CSS-Eigenschaft width zu überschreiben.

@Html.TextAreaFor(model => model.Comments, 10, 120, htmlAttributes: new {style="width: 100%; max-width: 100%;" }) 
Verwandte Themen