11

ねえ..現在の日付とユーザーが入力した日付を比較したいのですが..しかし、これまでのところエラーが発生しています..

私はこのようなことを試しました:

<asp:TextBox id="txtDate1" runat="server" />    
<asp:CompareValidator runat="server" ErrorMessage="The date must be greater than today"
    ControlToValidate="txtDate1" type="date" 
    ValuetoCompare="DateTime.Today.ToShortDateString()" />

DateTime.Today.ToShortDateString()「」のプロパティの値をValueToCompare「日付」型に変換できないというエラーが表示されValueToCompare="DateTime.Now.Date()"ましたが、同じエラーメッセージが表示されました。

私を助けてください、そして私はそれをとても感謝しています。

4

5 に答える 5

17

ValueToCompareプロパティをリテラル文字列として使用しているだけです。コードを実行して動的な値を取得する場合は、ASP タグを使用する必要があります。これを試して:

<asp:comparevalidator runat="server" 
  errormessage="The date must be greater than today"
  controltovalidate="txtDate1" type="date" 
  valuetocompare="<%# DateTime.Today.ToShortDateString() %>" />

次に、Page_Loadメソッドで を呼び出しますPage.DataBind()

これにより、ページがロードされたときにデータバインダーコードが実行され、値が引用符で囲まれます。

于 2010-02-15T06:11:20.483 に答える
6
    <asp:CompareValidator ID="CompareValidator3" runat="server" 
                        ControlToValidate="TextBox1" ErrorMessage="Date should be on or after today" 
                        Operator="GreaterThanEqual" Type="Date">
</asp:CompareValidator>

ページ読み込みイベントで、比較するバリデーターの値を次のように設定します

CompareValidator3.ValueToCompare = DateTime.Now.ToShortDateString();
于 2012-08-08T11:20:34.897 に答える
1

ValueToCompareコードビハインドを設定できます

        if (!Page.IsPostBack)
        {
           string currentDate = DateTime.Today.ToShortDateString();
           Comparevalidator1.ValueToCompare = currentDate;
        }

比較バリデータの場合:

    <asp:CompareValidator ID="Comparevalidator1" runat="server" ErrorMessage="The date must be greater than today"
    Operator="GreaterThan" ControlToValidate="txtDate1" Type="date" Display="Dynamic" />

Page.DataBind を使用しないのはなぜですか?

次のシナリオを検討してください。アクションボタンをクリックしたときにのみグリッドビューを表示する必要があります。データソースは宣言的に定義されます。しかし、Page.DataBind() を使用すると、ページの読み込み時にもグリッドが表示されます。

 <form id="form1" runat="server">
 <asp:TextBox ID="txtDate1" CssClass="firstBox" runat="server" Text=""></asp:TextBox>
 <asp:CompareValidator ID="Comparevalidator1" runat="server" ErrorMessage="The date must be greater than today"
    Operator="GreaterThan" ControlToValidate="txtDate1" Type="date" Display="Dynamic" />
 <asp:Button ID="btnAction" class="submitButton" runat="server" Text="Action" OnClick="btnAction_Click" />
 <asp:Button ID="btnDummy" class="submitButton" runat="server" Text="Dummy" OnClick="btnDummy_Click" />
 <br />
 <br />

 <asp:GridView ID="GridView1" runat="server" DataSource="<%# EmployeesResult %>">
 </asp:GridView>
 </form>

コードビハインド

public partial class ThirdTest : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Page.DataBind();

        if (!Page.IsPostBack)
        {
           string currentDate = DateTime.Today.ToShortDateString();
           txtDate1.Text = currentDate;
           Comparevalidator1.ValueToCompare = currentDate;
        }
    }

    protected void btnAction_Click(object sender, EventArgs e)
    {
        GridView1.DataBind();
        string value = GridView1.DataSource.ToString();
    }

    protected void btnDummy_Click(object sender, EventArgs e)
    {

    }

    //Propertry
    public List<Employee> EmployeesResult
    {
        get
        {
            List<Employee> employees = new List<Employee>();
            employees.Add(new Employee { EmpID = 1, EmpName = "Emp1" });
            employees.Add(new Employee { EmpID = 2, EmpName = "Emp2" });
            return employees;
        }
    }
  }
于 2013-06-12T09:23:50.233 に答える
0

これを試して。

<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="Date is required" ControlToValidate="txtmDate"></asp:RequiredFieldValidator>

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="Date is not valid (MM.DD.YYYY)" ControlToValidate="txtDate" ValidationExpression="(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d" ></asp:RegularExpressionValidator>

ユーザーが日付を入力する方法 (日付形式) も重要です。ここでは、MM.DD.YYYY の日付形式を使用しています。

<asp:CompareValidator ID="CompareValidatorGreaterThanToday" runat="server" ErrorMessage="The date must be greater than today" ControlToValidate="txtDate" Type="date" Operator="GreaterThan" ValueToCompare="<%# DateTime.Today.ToShortDateString() %>" ></asp:CompareValidator>

次に、Page_Load メソッド (*.aspx.cs) で、Page.DataBind() を呼び出します。

例:

protected void Page_Load(object sender, EventArgs e)
{            
   Page.DataBind();
}
于 2018-03-31T09:54:09.093 に答える
-1

以下に書かれていることを試してください:

<asp:CompareValidator runat="server" ErrorMessage="The date must be greater than today"
ControlToValidate="txtDate1" type="DateTime" 
ValuetoCompare='<%# DateTime.Now.ToString("d") '%> />
于 2011-02-12T14:11:09.573 に答える