if 语句以在数据库 MVC 4 中显示 1 或 2

本文关键字:显示 MVC 语句 数据库 if | 更新日期: 2023-09-27 18:30:21

我似乎无法根据是否有任何数据计算出在数据库中显示为 1 或 2 的逻辑。

代码是这样的:

在模型中,逻辑是:

[Display(Name = "Mono Reading:")]
public double? MonoReading { get; set; }
[Display(Name = "Colour Reading:")]
public double? ColourReading { get; set; }
public ReadingsEntry(string serialNumber) : this()
{
    //
    MonoReading = ca.vw_ReadingsEntry.Where(s => s.ser_num == SerialNumber && s.meter_type == "Mono").Select(c => c.meter_count).FirstOrDefault();
    ColourReading = ca.vw_ReadingsEntry.Where(s => s.ser_num == SerialNumber && s.meter_type == "Colour").Select(c => c.meter_count).FirstOrDefault();
}

网页视图:

<div id=”mono”>
  @Html.LabelFor(m => m.MonoReading)
                    @Html.TextBoxFor(m => m.MonoReading, new { @class = "form",})
                    @Html.ValidationMessageFor(m => m.MonoReading)
</div>
<div id=”colour”>
    @Html.LabelFor(m => m.ColourReading)
    @Html.TextBoxFor(m => m.ColourReading, new { @class = "form", })
    @Html.ValidationMessageFor(m => m.ColourReading)
</div>

控制器:

[HttpPost]
public ActionResult Save(M2CustomerPortal.Areas.Customer.Models.ReadingsEntry.ReadingsEntry readingForm)
{
    if (ModelState.IsValid)
    {
        var newMeterReading = new M2CPDAL.Models.CustomerPortal.CustomerReadingsEntry();
        newMeterReading.ser_num = readingForm.SerialNumber;
        **newMeterReading.MeterReading =  // Logic to go here**
        cpctx.CustomerReadingsEntries.Add(newMeterReading);
        cpctx.SaveChanges();  
    }
    return RedirectToAction("Index");
}

我想做的是,如果有任何数据MonoReading它应该显示为 1 表示 newMeterReading.MeterReadingColourReading显示为 2。

这里的逻辑将如何工作:

newMeterReading.ser_num = readingForm.SerialNumber;
**newMeterReading.MeterReading =  // Logic to go here**

如您所见,它serialNumber将序列号返回到数据库的示例。

if 语句以在数据库 MVC 4 中显示 1 或 2

首先,我假设

var newMeterReading = new M2CPDAL.Models.CustomerPortal.CustomerReadingEntry();

应该是

var newMeterReading = new M2CPDAL.Models.CustomerPortal.ReadingEntry(readingForm.SerialNumber);

?假设MonoReadingColourReading都可以在控制器中访问。我还假设没有数据意味着读数为 0。

如果是这样,您可以执行以下操作:

bool hasMonoReading = MonoReading.GetValueOrDefault() > 0;
bool hasColourReading = ColourReading.GetValueOrDefault() > 0;
int readingValue = 0;
if (hasColourReading)
  readingValue = 2;
else if (hasMonoReading)
  readingValue = 1;
else
  readingValue = 0;
newMeterReading.MeterReading = readingValue;

或更简洁地说:

bool hasMonoReading = MonoReading.GetValueOrDefault() > 0;
bool hasColourReading = ColourReading.GetValueOrDefault() > 0;
newMeterReading.MeterReading = (hasColourReading) ? 2 : (hasMonoReading) ? 1 : 0;

如果没有读数意味着读数值为空,那么您可以这样做:

newMeterReading.MeterReading = (ColourReading.HasValue) ? 2 : (MonoReading.HasValue) ? 1 : 0;