【问题标题】:Validation Message Not Displays On ModelState.IsValidModelState.IsValid 上不显示验证消息
【发布时间】:2016-02-03 08:57:05
【问题描述】:

我正在使用 Asp.Net MVC5 开发我的第一个应用程序。在我的应用程序中,我有一个视图,我将在其中调用两个操作。一个操作使用按钮,另一个操作通过 actionlink。当我使用按钮调用它时,它非常适合验证消息。

另一方面,如果我单击“添加另一个”(这是操作链接),我想要相同的验证,但它没有显示任何验证消息。我已经为@Html.ActionLink() 点击事件实现了下面的代码。

在 Razor 视图中 -

   @Html.ActionLink("Add Another", "AddNew", "AgreementRegistration", new { @class = "postLink" })

在控制器中 -

[HttpPost]
    public ActionResult AddNew(User_Master usermaster, Commercial_Master commercialmaster, Property_Master propertymaster, PropertyCommercial_Master propertycommercialmaster, PropertyDetails_Master propertydetailsmaster, SecurityDeposit_Master securitydepositmaster, PropertyUser_Master propertyusermaster, UserType_Master usertypemaster)
    {
        agreementnew = new AgreementNew(usermaster, commercialmaster, propertymaster, propertycommercialmaster, propertydetailsmaster, securitydepositmaster, propertyusermaster, usertypemaster);
        if (ModelState.IsValid)
        {
            //Some Logic
            return View("InitialView", agreementnew);
        }
        else
        {
            //Some Logic
            return View("InitialView", agreementnew);
        }
    }

当我使用调试器检查它时,它在 else 块中出现上述方法,但没有显示任何验证消息。我想在单击 ActionLink 时显示所有验证消息。我该如何解决这个问题?

【问题讨论】:

  • 您的“添加另一个”`是一个重定向的链接。它不执行验证。但重点是什么 - 如果您进行重定向,您不会保存当前数据,因此消息会有点毫无意义。
  • @StephenMuecke 但我正在重定向到相同的视图。如果不可能,那我该如何实现呢?
  • 是的,这会创建模型的新实例并显示新视图。不清楚您想要实现什么以及为什么
  • 我想在点击 actionlink 时实现相同的验证,所以有没有其他选项可以实现这一点,请告诉我。
  • 但是为什么呢?它是一个重定向的链接。您没有保存用户输入的数据(一旦单击链接,您就会丢弃用户输入的所有值。

标签: c# asp.net-mvc model-view-controller asp.net-mvc-5 action


【解决方案1】:

单击操作链接不会提交您的表单。仅在提交表单时检查验证。因此,请在单击您的操作链接时使用 Javascript 提交您的表单。

首先将您的操作链接更改为此。

@Html.ActionLink("Add Another", "AddNew", "AgreementRegistration", new { @class = "postLink", onclick="submitMyForm()" })

然后添加以下代码

<script>
   function submitMyForm(){
   $("#yourFormID").submit();  //assign an id to your form and use that here
}
</script>

【讨论】:

  • 谢谢。它非常适合我。只是我为表单添加了 ID 并使用您的代码提交了我的表单。
  • @SVT002,你到底为什么不把它做成一个提交按钮(如果你想要的话,让它看起来像一个链接)。为此使用 javascript 是疯狂的。现在你永远不知道点击了哪个按钮,那么 2 个不同的按钮/链接有什么意义
  • @StephenMuecke 根据要求,当我点击添加另一个链接时,我必须多次使用相同的前端,并且我必须在该操作中实现不同的逻辑。
  • 这是我的假设,这段代码不会那样做。您需要两个具有相同name 属性(比如name="button")和value 属性(比如value="Add Another"value="Save and Next" 的提交按钮。在POST 方法中,添加一个参数sting button,其中将包含“添加另一个”或“保存并下一步”,具体取决于您单击的按钮(因此您可以根据按钮实现不同的逻辑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-29
  • 2012-06-11
相关资源
最近更新 更多