在用户控件mvc中获取null值

时间:2014-07-31 05:59:09

标签: .net asp.net-mvc asp.net-mvc-3 user-controls

我正在尝试为具有日历的文本框添加用户控件

我的观点

  @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

请帮助我获取从视图传递给用户控件的值。

我想在此用户控件的同一页面上使用多个时间。 如果有任何其他方式喜欢这个功能也很有帮助。

1 个答案:

答案 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>