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.MeterReading
,ColourReading
显示为 2。
这里的逻辑将如何工作:
newMeterReading.ser_num = readingForm.SerialNumber;
**newMeterReading.MeterReading = // Logic to go here**
如您所见,它serialNumber
将序列号返回到数据库的示例。
首先,我假设
var newMeterReading = new M2CPDAL.Models.CustomerPortal.CustomerReadingEntry();
应该是
var newMeterReading = new M2CPDAL.Models.CustomerPortal.ReadingEntry(readingForm.SerialNumber);
?假设MonoReading
和ColourReading
都可以在控制器中访问。我还假设没有数据意味着读数为 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;