我正在尝试为具有日历的文本框添加用户控件
我的观点
@Html.Partial("~/Views/Shared/EditorTemplates/DateTime.ascx", "FromDate");
我的用户控制
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %>
<%= Html.TextBox(ViewData.ModelMetadata.PropertyName, new { @class="datepicker"} )%>
<script type="text/javascript">
$(document).ready(function () {
$('.datepicker').datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'mm-dd-yy',
showButtonPanel: true,
gotoCurrent: true
});
});
我的控制器
[HttpGet]
public ActionResult SetTask()
{
SetTask model = new SetTask();
var data = (from d in edc.ProjectTBs
select d).ToList();
model.ProjectList = new SelectList(data, "ProjectID", "ProjectName").ToList();
model.ProjectList.Insert(0, new SelectListItem { Text = "--Select--", Value = "0" });
// ModelState.Clear();
return View(model);
}
错误消息
Value cannot be null or empty.
Parameter name: name
请帮助我获取从视图传递给用户控件的值。
我想在此用户控件的同一页面上使用多个时间。 如果有任何其他方式喜欢这个功能也很有帮助。
答案 0 :(得分:2)
而不是部分视图使用EditorFor。
这样称呼:<%= Html.EditorFor(m => m.PropertyName) %>
如果您想以正确的方式使用此示例。
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime?>" %>
<%= Html.TextBox("", (Model.HasValue ? Model.Value.ToString("dd-MM-yyyy") : string.Empty), new { @class = "datepicker" }) %>
<script type="text/javascript">
$(document).ready(function() {
$('.datepicker').datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'mm-dd-yy',
showButtonPanel: true,
gotoCurrent: true
});
});
</script>