所以我目前正在做一个学校项目,您必须为此申请膳食。一顿饭有3道菜,开胃菜,主菜和甜点。从中可以选择开胃菜和甜点,但必须选择其中一种。我编写了此函数来检查一个是否为0,另一个是否由所选对象填充(StarterCourse和DessertCourse是整数):
public JsonResult CheckDessertCourse(MealCourse mealCourse)
{
if(mealCourse.StarterCourse == 0 && mealCourse.DessertCourse > 0)
{
return Json(true);
}
else if(mealCourse.StarterCourse > 0 && mealCourse.DessertCourse == 0)
{
return Json(true);
}
else
{
return Json(false);
}
}
这是我的模型的样子:
namespace EasyMeal.Models
{
public class MealCourse
{
[Required]
public int MealID { get; set; }
[Required(ErrorMessage = "Please enter a date for this meal")]
[Remote(action: "ValidateDate", controller: "Meals")]
[UIHint("Date")]
public DateTime Date { get; set; }
[Required(ErrorMessage = "Please enter the price for this meal")]
[Range(0.01, double.MaxValue, ErrorMessage = "Please enter a positive price")]
public double Price { get; set; }
[Remote(action: "CheckDessertCourse", controller: "Meals")]
public int StarterCourse { get; set; }
[Required(ErrorMessage = "Please choose a main dish for this meal")]
public int MainCourse { get; set; }
[Remote(action: "CheckDessertCourse", controller: "Meals")]
public int DessertCourse { get; set; }
public IList<Course> Courses { get; set; }
}
}
我的看法:
@model MealCourse
@using EasyMeal.Models.Logic
@{
ViewData["Title"] = "Create";
}
<h1>Create new meal</h1>
<div style="float: right; margin-top: -45px;">
<a class="btn btn-danger pull-right" asp-controller="Meals" asp-action="Index">Cancel</a>
</div>
<hr />
<div class="row">
<div class="col-md-6">
<form asp-action="Create" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<span asp-validation-for="Date" class="text-danger"></span> <br />
<label asp-for="Date" class="control-label"></label>
<input asp-for="Date" data-val="true" data-val-required="The date field is required." class="form-control" />
</div>
<div class="form-group">
<span asp-validation-for="Price" class="text-danger"></span><br />
<label asp-for="Price" class="control-label"></label>
<input asp-for="Price" class="form-control" />
</div>
<div class="form-group">
<span asp-validation-for="StarterCourse" class="text-danger"></span>
<label class="control-label" asp-for="StarterCourse">Starter:</label>
<select class="form-control" asp-for="StarterCourse" data-val="true">
<option value=0>Choose an option</option>
@foreach (var c in Model.Courses)
{
if (c.CourseType == "Starter" && c.Date <= GetDates.GetNextWeeksSunday() && c.Date >= GetDates.GetNextMonday())
{
<option value="@c.CourseID">@c.Name</option>
}
}
</select>
</div>
<div class="form-group">
<label class="control-label" asp-for="MainCourse">Main Course:</label>
<select class="form-control" asp-for="MainCourse">
<option value="">Choose an option</option>
@foreach (var c in Model.Courses)
{
if (c.CourseType == "Main" && c.Date <= GetDates.GetNextWeeksSunday() && c.Date >= GetDates.GetNextMonday())
{
<option value="@c.CourseID">@c.Name</option>
}
}
</select>
</div>
<div class="form-group">
<span asp-validation-for="DessertCourse" class="text-danger"></span>
<label class="control-label" asp-for="DessertCourse">Dessert:</label>
<select class="form-control" asp-for="DessertCourse" data-val="true">
<option value=0>Choose an option</option>
@foreach (var c in Model.Courses)
{
if (c.CourseType == "Dessert" && c.Date <= GetDates.GetNextWeeksSunday() && c.Date >= GetDates.GetNextMonday())
{
<option value="@c.CourseID">@c.Name</option>
}
}
</select>
</div>
<div class="form-group">
<input type="submit" value="create" class="btn btn-primary" />
</div>
</form>
</div>
</div>
@section scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("input.input-validation-error")
.closest(".form-group").addClass("has-danger");
});
</script>
}
我尝试了一些类似添加其他if语句的操作,我为Course创建了一个假对象。但是仍然我的应用程序给出了一个错误,当未选择一个时,该值应为0 ...
提前感谢!
您是否尝试过重新打开和关闭它? (不用担心,省去了很多麻烦)