Anfängerfrage. Ich habe einen Parameter, der an eine Erstellungsansicht übergeben wird. Ich muss einen Feldnamen mit einem Standardwert festlegen. @ Html.EditorFor (model => model.Id) Ich muss dieses Eingabefeld mit dem Namen Id auf einen Standardwert setzen, der über einen Aktionslink an die Ansicht übergeben wird.
Wie kann dieses Eingabefeld - @ Html.EditorFor (model => model.Id) - mit einem Standardwert festgelegt werden?
Würde das folgende funktionieren ?? Wo die Zahl 5 ein Parameter ist, übergebe ich das Textfeld, um den Standardwert festzulegen.
@Html.EditorFor(c => c.PropertyName, new { text = "5"; })
c#
asp.net-mvc
asp.net-mvc-3
Nate
quelle
quelle
Folgendes habe ich gefunden:
@Html.TextBoxFor(c => c.Propertyname, new { @Value = "5" })
arbeitet mit einem Kapital V, kein Kleinbuchstaben v (der Annahme sein Wert ist ein Schlüsselwort in Setter typischerweise verwendet) Lower vs oberen Wert
@Html.EditorFor(c => c.Propertyname, new { @Value = "5" })
funktioniert nicht
Ihr Code sieht jedoch so aus
<input Value="5" id="Propertyname" name="Propertyname" type="text" value="" />
Wert gegen Wert. Ich bin mir nicht sicher, ob ich das zu gern hätte.
Warum nicht einfach die Controller-Aktion einchecken, ob die Eigenschaft einen Wert hat oder nicht, und wenn sie ihn dort in Ihrem Ansichtsmodell nicht einfach auf Ihren Standardwert setzt, und ihn binden lassen, um zu vermeiden, dass all diese Affen in der Ansicht arbeiten?
quelle
HtmlHelper
Methoden verwenden. Sie legen den Wert der Eigenschaft in der GET-Methode fest, bevor Sie das Modell an die Ansicht übergeben.Es ist nicht richtig, den Standardwert in der Ansicht festzulegen. Die Ansicht sollte Anzeigearbeiten ausführen, nicht mehr. Diese Aktion bricht die Ideologie des MVC-Musters. Also der richtige Ort, um Standardeinstellungen festzulegen - Methode der Controller-Klasse erstellen.
quelle
Bessere Option ist es, dies in Ihrem Ansichtsmodell wie zu tun
public class MyVM { int _propertyValue = 5;//set Default Value here public int PropertyName{ get { return _propertyValue; } set { _propertyValue = value; } } }
Dann aus Ihrer Sicht
funktioniert so, wie du es willst (wenn kein Wert vorhanden ist, wird der Standardwert vorhanden sein)
quelle
Ich habe das gerade gemacht (Shadis erste Antwort) und es ist ein Vergnügen:
public ActionResult Create() { Article article = new Article(); article.Active = true; article.DatePublished = DateTime.Now; ViewData.Model = article; return View(); }
Ich könnte die Standardwerte wie ein richtiger MVC-Süchtiger in mein Modell einfügen: (Ich verwende Entity Framework)
public partial class Article { public Article() { Active = true; DatePublished = Datetime.Now; } } public ActionResult Create() { Article article = new Article(); ViewData.Model = article; return View(); }
Kann jemand irgendwelche Nachteile sehen?
quelle
Sollten Sie nicht die
@Html.EditorFor()
Attribute verwenden, die Sie in Ihr Modell eingefügt haben?[DefaultValue(false)] public bool TestAccount { get; set; }
quelle
Schieben Sie es in die
ViewBag
:Regler:
ViewBag.ProductId = 1;
Aussicht:
@Html.TextBoxFor(c => c.Propertyname, new {@Value = ViewBag.ProductId})
quelle
Das hat bei mir funktioniert
In Controlle
Im Hinblick auf
@Html.EditorFor(model => model.AAA, new { htmlAttributes = new { @Value = ViewBag.AAA } }
quelle
Das hat bei mir funktioniert:
In der Steuerung
*ViewBag.DefaultValue= "Default Value";*
In der Ansicht
*@Html.EditorFor(model => model.PropertyName, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter a Value", @Value = ViewBag.DefaultValue} })*
quelle
Für mich muss ich das aktuelle Datum und die aktuelle Uhrzeit als Standardwert festlegen. Dadurch wurde mein Problem in der Ansicht behoben. Fügen Sie diesen Code hinzu:
<div class="form-group"> @Html.LabelFor(model => model.order_date, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.order_date, new { htmlAttributes = new { @class = "form-control",@Value= DateTime.Now } }) @Html.ValidationMessageFor(model => model.order_date, "", new { @class = "text-danger" }) </div> </div>
quelle
Legen Sie in der Konstruktormethode Ihrer Modellklasse den gewünschten Standardwert fest. Erstellen Sie dann in Ihrer ersten Aktion eine Instanz des Modells und übergeben Sie sie an Ihre Ansicht.
public ActionResult VolunteersAdd() { VolunteerModel model = new VolunteerModel(); //to set the default values return View(model); } [HttpPost] [ValidateAntiForgeryToken] public ActionResult VolunteersAdd(VolunteerModel model) { return View(model); }
quelle
Dies ist mein Arbeitscode:
@Html.EditorFor(model => model.PropertyName, new { htmlAttributes = new { @class = "form-control", @Value = "123" } })
Mein Unterschied zu anderen Antworten besteht darin, Value im Array htmlAttributes zu verwenden
quelle