【问题标题】:ASP.NET Web page validation - dual formASP.NET 网页验证 - 双表单
【发布时间】:2014-09-01 20:42:42
【问题描述】:

一段时间以来,我一直在使用客户端和服务器端验证助手(如下所示)来验证我网站上的表单。但是,我现在有一个页面,上面有 2 个表单,我不太确定如何(或者是否有可能)单独验证每个表单?

这是我为单个表单所做的:

// Setup validation
Validation.Add("PropertyName",
    Validator.Required("Please provide a property name"),
    Validator.StringLength(40, 0, "Your property name must be a maximum of 40 characters")
);
Validation.Add("PropertyType",
    Validator.Required("Please select a property type"),
    Validator.Integer("Please use the options provided")
);

if (IsPost){
    if (Validation.IsValid()) {
        var sql = "INSERT INTO Property_Info (PropertyName, PropertyTypeID) VALUES (@0, @1)";
        db.Execute(sql, Request["PropertyName"], Request["PropertyType"]);

        Response.Redirect("~/owner/listings/complete/" + rPropertyId);
    } else {
        ModelState.AddFormError("broken again!!!!!!!!");
    }
} 

【问题讨论】:

  • 你说你有两张表格是什么意思?在 ASP.NET WebForms 中,只有一种表单。
  • 我想在同一个页面上有2个表单,可以独立提交。
  • @MatthewatCriticalCognition 这是 ASP.NET 网页框架的一个示例 - 不是 Web 窗体。

标签: jquery asp.net validation webmatrix asp.net-webpages


【解决方案1】:

您可以有条件地使用验证助手。例如,您可能希望这样做:

if(Request["Action"] == "Update"){
    Validation.RequireField("SomeField");
    if(Validation.IsValid()){
        // blah blah
    }
}

但是,这种方法消除了客户端验证(这对您可能很重要,也可能不重要)。

【讨论】:

  • 谢谢迈克。所以你没有解决这两个问题的办法吗?我对客户端很满意,但为了让我的网站尽可能地方便用户使用,我也希望有客户端。
  • 您也可以有条件地使用 jQuery 验证库。这样您就可以根据提交的表单添加客户端验证。
【解决方案2】:

Mike 为您提供的建议是处理多种表单的绝佳示例。

但是还有另一种方法可以做到这一点。我认为有两种方法可以解决这个问题。

客户端验证

迈克说,

但是,这种方法消除了客户端验证(这对您可能很重要,也可能不重要)。

如果它不重要,则离开此方法并转到下一个方法,但是,如果它对您很重要,那么您可以尝试使用 jQuery 或纯 JavaScript 来处理客户端验证。它不如 ASP.NET 为您提供的验证功能强大,但您可以在同一个页面上控制两个表单并检查数据等等。

<form method="post">
    <input type="text" id="name" name="name" />
    <input type="text" id="age" name="age" />
    <input type="text" id="email" name="email" />
</form>

<form method="post">
    <input type="text" id="name2" name="name2" />
    <input type="text" id="age2" name="age2" />
    <input type="text" id="email2" name="email2" />
</form>

您可以使用jQuery轻松操作DOM并检查元素及其值,我将告诉您一个,一个

$(document).ready(function () {
   var name = $('#name');
   if(name.length < 10) {
     alert('Name must be 10 letters long');
   }
   // more conditions for the name!
});

这是 jQuery 验证,您可以使用它,它将在客户端的用户代理(浏览器)上运行,并将控制两种表单,您可以通过某种逻辑算法检查用户提供的数据。

使用两个页面

此方法使用两个页面,第一页是您的 HTML 表单所在的页面,第二个页面是处理数据的地方。您可以使用与您使用的完全相同的 html 表单,只需包含一个更隐藏的输入来命名表单,然后将其用作条件。像这样,

<form method="post" action="~/secondPage.cshtml">
    <input type="hidden" name="formName" value="form1" />
    <input type="text" name="name" />
    <input type="text" name="age" />
    <input type="text" name="email" />
    <input type="submit" name="Submit" />
</form>

<form method="post" action="~/secondPage.cshtml">
    <input type="hidden" name="formName" value="form2" />
    <input type="text" name="name2" />
    <input type="text" name="age2" />
    <input type="text" name="email2" />
    <input type="submit" name="Submit" />
</form>

..现在你可以在第二页使用这个了。

if(Request.Form["formName"] == "form1") {
    // first form
    // check validation for first form!
} else {
    // second form
    // check for second one..
}

..然后继续这个过程。

【讨论】:

    猜你喜欢
    • 2020-03-24
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    相关资源
    最近更新 更多