Ich habe dieses Modell:
public class SearchModel
{
[DefaultValue(true)]
public bool IsMale { get; set; }
[DefaultValue(true)]
public bool IsFemale { get; set; }
}
Aber basierend auf meinen Recherchen und Antworten hier wird DefaultValueAttribute
eigentlich kein Standardwert festgelegt. Diese Antworten stammen jedoch aus dem Jahr 2008. Gibt es ein Attribut oder einen besseren Weg als die Verwendung eines privaten Felds, um diese Werte auf true zu setzen, wenn sie an die Ansicht übergeben werden?
Hier ist die Aussicht sowieso:
@using (Html.BeginForm("Search", "Users", FormMethod.Get))
{
<div>
@Html.LabelFor(m => Model.IsMale)
@Html.CheckBoxFor(m => Model.IsMale)
<input type="submit" value="search"/>
</div>
}
asp.net-mvc
asp.net-mvc-3
Shawn Mclean
quelle
quelle
Verwenden Sie einen bestimmten Wert:
[Display(Name = "Date")] public DateTime EntryDate {get; set;} = DateTime.Now;//by C# v6
quelle
Erstellen Sie eine Basisklasse für Ihre
ViewModels
mit dem folgenden Konstruktorcode, der angewendet wird,DefaultValueAttributes
wenn ein ererbendes Modell erstellt wird.public abstract class BaseViewModel { protected BaseViewModel() { // apply any DefaultValueAttribute settings to their properties var propertyInfos = this.GetType().GetProperties(); foreach (var propertyInfo in propertyInfos) { var attributes = propertyInfo.GetCustomAttributes(typeof(DefaultValueAttribute), true); if (attributes.Any()) { var attribute = (DefaultValueAttribute) attributes[0]; propertyInfo.SetValue(this, attribute.Value, null); } } } }
Und erben Sie davon in Ihren ViewModels:
public class SearchModel : BaseViewModel { [DefaultValue(true)] public bool IsMale { get; set; } [DefaultValue(true)] public bool IsFemale { get; set; } }
quelle
public bool IsMale { get; set; } = true
Falls Sie dasselbe Modell auf dem Server veröffentlichen müssen, ist die Lösung mit dem Standardwert
bool
im Konstruktor für Sie nicht realisierbar. Stellen Sie sich vor, Sie haben folgendes Modell:public class SearchModel { public bool IsMale { get; set; } public SearchModel() { IsMale = true; } }
Zu sehen wäre so etwas:
Das Problem besteht darin, dass der Benutzer dieses Kontrollkästchen deaktiviert und auf dem Server veröffentlicht. Am Ende wird der Standardwert im Konstruktor eingerichtet (was in diesem Fall der Fall ist).
In diesem Fall würde ich also nur den angezeigten Standardwert angeben:
@Html.CheckBoxFor(n => n.IsMale, new { @checked = "checked" })
quelle
<div class="form-group"> <label asp-for="Password"></label> <input asp-for="Password" value="Pass@123" readonly class="form-control" /> <span asp-validation-for="Password" class="text-danger"></span> </div>
Verwenden Sie: value = "Pass @ 123" als Standardwert für die Eingabe im .net-Kern
quelle
Was wirst du haben? Sie werden wahrscheinlich eine Standardsuche und eine Suche erhalten, die Sie von irgendwoher laden. Für die Standardsuche ist ein Standardkonstruktor erforderlich. Machen Sie also einen, wie Dismissile bereits vorgeschlagen hat.
Wenn Sie die Suchkriterien von einer anderen Stelle laden, sollten Sie wahrscheinlich über eine Zuordnungslogik verfügen.
quelle