Prüfen, ob der Wert vom Typ DateTime null ist in Sicht und zeigt leer, wenn null
Von meinem controller habe ich den übergebenen Wert Modul zum anzeigen
public ActionResult Details(long id, string owner)
{
var module = _ownedModuleRepository.GetModuleDetails(id, owner);
return View(module);
}
Ich gezeigt habe, den Wert, den es enthält in der Ansicht wie folgt
<dt>ID</dt>
<dd>@Model.Id</dd>
<dt>Module ID</dt>
<dd>@Model.ModuleId</dd>
<dt>Owner</dt>
<dd>@Model.Owner</dd>
<dt>Module Type</dt>
<dd>@Model.TypeName</dd>
<dt>Module Kind</dt>
<dd>@Model.KindName</dd>
<dt>Ownership Start Date</dt>
<dd>@Model.Start</dd>
<dt>Ownership End Date</dt>
<dd>@Model.End</dd>
@foreach (var properties in Model.Properties)
{
<dt>Property Name</dt>
<dd>@properties.Name</dd>
<dt>Property Value</dt>
<dd>@properties.Value</dd>
}
Derzeit @Modell.Ende null ist, wird er von DateTime-Typ und ich hatte es um die null-Werte zulassen im viewmodel.
Da es null ist, das ist, was ich bin immer im Blick
Wie Sie sehen können, den Wert des Eigentums End-Datum ist der Wert der Name-Eigenschaft von unten. Wie kann ich einstellen, dass es leer ist, wenn der @Modell.Ende null ist?
Edit 1:
Mein Modell
public class OwnedModuleDetails
{
public long Id { get; set; }
public string ModuleId { get; set; }
public string Owner { get; set; }
public string KindName { get; set; }
public string TypeName { get; set; }
public DateTime Start { get; set; }
public DateTime? End { get; set; }
public IEnumerable<Property> Properties { get; set; }
}
Methode aus dem repository
public OwnedModuleDetails GetModuleDetails(long id, string owner)
{
//ReSharper disable ImplicitlyCapturedClosure
var module = (_dbSis.OwnedModules.Where(t => t.Id == id).Select(m => new OwnedModuleDetails
//ReSharper restore ImplicitlyCapturedClosure
{
Id = id,
ModuleId = m.ModuleId,
TypeName = m.ModuleType.TypeName,
KindName = m.ModuleType.ModuleKind.KindName,
Owner = owner,
Start = m.Start,
End = m.End,
Properties = m.PropertyConfiguration.PropertyInstances.Select(
x => new Property { Name = x.Property.Name, Value = x.Value })
}));
return (module.FirstOrDefault());
}
- Es ist seltsam, wie könnte man ein string-Wert in eine
DateTime?
geben. Sind Sie sicher, dass dieEnd
Eigenschaft istDateTime?
? Wo ist dieserMicrophoneArrayRackModuleId
aus? - Es ist, legen Sie das Datum und die Uhrzeit, ich mein Modell als ein edit, auch die Methode, die Controller-Aufrufe im repository
- Wo ist dieser
MicrophoneArrayRackModuleId
aus? Können Sie nicht vielleicht eine solche Ausgabe für ein DateTime-Eigenschaft. - Mein Modell hat
IEnumerable<Property> Properties
- Eigenschaft, Klasse enthält eine Name (string) und Wert (string)MicrophoneRackModuleId
ist einer derProerties
Name
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, ein Raum:
There is no implicit conversion between 'string' and 'system.web.Ihtmlstring'
für die zweite Möglichkeit rechts in : von@:
es sagt@ must be followed by valid code block
. Ich habe versucht, das entfernen von @:, aber im browser zeigt erOwnership End Date
alsif (Model.End != null) { } else { }
if
Anweisung sollte vorangestellt werden@
.<dt>
und<dd>
- tags. Wenn es leer ist, offenbar zeigt der browser die nächste. Sie sollten versuchen, fixieren Sie Ihre CSS-Datei.kürzlich hatte ich dieses Problem, wenn der Benutzer die eingefügte null-Wert in Spalte Datum
führen zu diesem Fehler:
System.InvalidOperationException: Nullable object must have a value
um dieses Problem zu lösen, anstatt
DisplayFor
benutzen Sie einfach folgenden code in Ihre anzeigen , so dass, wenn der Wert der Spalte null ist, dann zeigt es das Datum Leer istweiter Lesen diese und diese für Modell
hoffe, dass jemand hilft.
Nicht eine ternäre operation, die hier arbeiten:
können Sie C# verwenden null-coalescing operator: