无法检索日期输入值C#Web窗体

时间:2018-05-29 15:40:33

标签: c# asp.net input datepicker webforms

Here is what I can see when I do e.Item.FindControl for the TextBox I'm trying to get the value for

我在列表视图中有2个日期输入,我正在尝试检索它们的值,但总是得到一个空字符串。

如果我在前端设置了值,那么它会进入后面的代码,但如果我编辑该字段,则会返回原始值。

我可以毫无问题地获取和控制值。

我尝试过使用asp:TextBox和html

<asp:TextBox ID="editArrivalFrom" name="editArrivalFrom" TextMode="Date" runat="server" OnTextChanged="editArrivalFrom_TextChanged"></asp:TextBox>
<input type="date" id="editArrivalTo" name="editArrivalTo" runat="server" />

var arrivalFrom = (TextBox) e.Item.FindControl("editArrivalFrom");
if (!String.IsNullOrWhiteSpace(arrivalFrom.Text))

var arrivalTo = (HtmlInputGenericControl) e.Item.FindControl("editArrivalTo");
if (!String.IsNullOrWhiteSpace(arrivalTo.Value))

我也尝试过使用Request.Form,以下所有内容都返回null:

var test = Request.Form[arrivalFrom.UniqueID];
var test2 = Request.Form[arrivalFrom.ClientID];
var test3 = Request.Form["editArrivalFrom"];

Request.Form.AllKeys

中也没有任何输入的迹象

asp控件没有显示在designer.cs文件中,只是添加它只会导致它为null。

任何建议都会非常感激,我已经把头发拉了几个小时。

表格更新的相关代码如下。请注意,所有这些都包含在更新面板中

<asp:ListView ID="MarkupRuleList" runat="server"
        OnItemCommand="MarkupRuleList_OnItemCommand">
<EditItemTemplate>
    <asp:LinkButton ID="btnUpdate" CssClass="lstview_record_bttn button-spacing-7" Text="Update" CommandName="Update" CommandArgument='<%# Eval("Id") %>' runat="server" />
</EditItemTemplate

protected void MarkupRuleList_OnItemCommand(object sender, ListViewCommandEventArgs e)
    {
        int markupId = 0;
        int.TryParse(e.CommandArgument.ToString(), out markupId);
        var markup = new MarkupRuleDTO();

        switch (e.CommandName)
        {
            case "Update":
                // GetMarkupRuleFromPage contains all of the code from the top of this post
                markup = GetMarkupRuleFromPage(e, markupId);
                break;
        }
    }

编辑:通过抛弃日期输入并使用常规文本框解决,然后执行以下onkeyup JS函数

function dateInputHandler(item, event) {
    // key code 8 == backspace
    if (event.keyCode != 8) {
        // insert forward slashes after days and months
        if (item.value.length == 2 || item.value.length == 5) {
            item.value = item.value + '/'
        }
        // remove double slashes and prevent length exceeding 10 characters
        // format should be dd/mm/yyyy
        if (item.value.endsWith("//") || item.value.length > 10) {
            item.value = item.value.slice(0, -1);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

最好不要使用发送者对象而不是EventArgs对象。

var x = ((TextBox)sender).Text;

但您可以直接(或应该)访问控件。

var x = editArrivalFrom.Text;

要从表单中获取,请使用正确的变量名称:

var x = Request.Form[editArrivalFrom.ClientID];