下面的 ViewModel 用于多種表單。
我的目標是使用 DateRangeViewModel 本身更新從這些表單接收到的值。可能嗎?
示例:用戶提交“2022-01-01 12:00:00 AM”,我將其更新為“2022-01-02 12:00:00 AM”,然后將其傳遞給控制器??。
我試過的:
public class DateRangeViewModel
{
public DateTime? From { get; set; }
public DateTime? To {
get
{
if (!To.HasValue) { return null; }
return To.Value.AddDays(1);
}
set {}
}
}
它會引發“System.StackOverflowException”型別的例外。
我知道我可以通過控制器更新這些值。然而,這不是我的本意。
uj5u.com熱心網友回復:
您基本上是在這里創建一個遞回函式(因此是 StackOverflowException)。您不需要在 getter 中參考“To”,您需要參考“內部值”(很可能是私有的)。
所以這應該作業:
private DateTime? ToValue { get; set; }
public DateTime? To
{
get { return ToValue.HasValue ? ToValue.AddDays(1) : null; }
set { ToValue = value; }
}
uj5u.com熱心網友回復:
使用支持欄位:
public class DateRangeViewModel
{
public DateTime? From { get; set; }
public DateTime? To {
get
{
return _to;
}
set
{
if (value == null)
{
_to = null;
}
else
{
_to = value.Value.AddDays(1);
}
}
}
private DateTime? _to;
}
如果您使用附加屬性,可能會更清楚:
public class DateRangeViewModel
{
public DateTime? From { get; set; }
public DateTime? To { get; set; }
public DateTime? ToPlus1Day => To == null ? null : To.Value.AddDays(1)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/530186.html
