【发布时间】:2019-03-19 16:07:16
【问题描述】:
我是 asp.net MVC 的初学者。我尝试创建一个允许过滤数据网格的应用程序。当我想根据日期过滤数据时出现错误(在我的应用程序中,该字段是“asked_date”)。 我在控制器中创建了 2 个参数:DateTime SelectedDateStart、DateTime SelectedDateEnd。在控制器中,我使用这样的参数:
public ActionResult Index(string SortOrder, string SelectedDesk, string SelectedProgramme, string SelectedCountry, DateTime SelectedDateStart, DateTime SelectedDateEnd)
{
var missions = from s in db.missions_supportmission
select s;
//Filtres
if (!String.IsNullOrEmpty(SelectedDesk))
{
missions = db.missions_supportmission.Include(s => s.organization_desk).Where(a => a.desk_id == SelectedDesk);
}
if (!String.IsNullOrEmpty(SelectedProgramme))
{
missions = db.missions_supportmission.Include(s => s.organization_programme).Where(a => a.programme_id== SelectedProgramme);
}
if (!String.IsNullOrEmpty(SelectedCountry))
{
missions = db.missions_supportmission.Include(s => s.organization_hi_country).Where(a => a.country_id == SelectedCountry);
}
//Filtres dates
missions = db.missions_supportmission.Where(a => a.asked_date > SelectedDateStart).Where(a => a.asked_date < SelectedDateEnd);
ViewBag.SelectedDateStart = SelectedDateStart;
ViewBag.SelectedDateEnd = SelectedDateEnd;
return View(missions.ToList());
}
在我看来是这样的:
<h3>Date</h3>
<div class="form-group">
<label class="control-label col-md-4" for="Date">De</label>
<div class="col-md-8">
<input type="date" class="form-Date" id="id" value="ViewBag.DateStart" onchange="form.submit();">
</div>
<label class="control-label col-md-4" for="Date">A</label>
<div class="col-md-8">
<input type="date" class="form-Date" id="id" value="ViewBag.DateEnd" onchange="form.submit();">
</div>
</div>
在课堂上我有这个:
public partial class missions_supportmission
{public int id { get; set; }
public System.DateTime asked_date { get; set; }
调试时出现以下错误:
“System.ArgumentException:参数字典包含方法'System.Web.Mvc.ActionResult Index(System.String,System.String, System.String, System.String, System.DateTime, System.DateTime)' in 'MissionsDF.Controllers.MissionsController'。可选参数必须是引用类型、可空类型或声明为可选参数。 Nom du paramètre : 参数"
感谢您的帮助!
【问题讨论】:
-
异常表明
SelectedDateStart包含空值,它需要DateTime?数据类型。另外<input type="date" class="form-Date" id="id" value="ViewBag.DateStart" onchange="form.submit();">不是创建DateTime输入的好方法,为什么不使用@Html.TextBoxFor或@Html.EditorFor助手? -
您的输入没有
name属性 - 它们不会回发任何内容。 -
您还有其他问题 -
onchange="form.submit();"定义是多余的,您可以简单地从类选择器中处理它,或者添加一个按钮来处理表单提交。 -
我尝试像这样更改我的代码:@Html.Editor("SelectedDateStart", new { onchange = "form.submit();" });我要更改控制器中的某些内容吗?
-
如果
DateTime编辑器可以有空值,请确保参数声明为DateTime?并检查空值。否则你需要为DateTime设置默认值以避免错误。
标签: asp.net-mvc