【问题标题】:Adding ActionLink in @HtmlValidationSummary在 @HtmlValidationSummary 中添加 ActionLink
【发布时间】:2019-07-29 16:10:02
【问题描述】:

我对唯一字段进行了自定义验证。它工作正常,但有没有办法将我的错误消息包装在 ActionLink 中?

我尝试了类似的方法,但它不起作用。

Link in validation summary message

如果我的错误信息可以是链接,那就更好了。

编辑: TY家伙的答案。我会更好地解释它。所以,我有独特的领域。它类似于社会安全号码。关键是只能是其中之一。所以我对此进行了自定义验证。它工作正常。它显示已经有这样的 SSN 的消息。但我希望它作为链接,以便它可以进入其他视图并显示具有该 SSN 的人的详细信息。如果我知道如何在此处添加操作链接,我知道该怎么做:

@Html.ValidationSummary(true, "", new { @class= "text-danger" })

所以,我发现了那个链接,但我不明白它是如何工作的,因为。如果我只是这样:

@Html.Raw(HttpUtility.HtmlDecode(Html.ValidationSummary().ToHtmlString()))

它有效。它显示属性和模型错误。但即使我添加 true 只是为了不显示属性错误:

@Html.Raw(HttpUtility.HtmlDecode(Html.ValidationSummary(true).ToHtmlString()))

程序因空而中断。我什至不知道在哪里添加 ActionLink。

型号是

public class PI { public Predavaci X { get; set; } public Adrese_predavaca Y { get; set; } }

SSN 是 od X 的一部分

【问题讨论】:

  • 我不明白,为什么您提供的链接中找到的方法不起作用?你能提供更多细节吗?
  • 您的用例是什么?为什么不让 MVC 做这件事并在视图上显示带有链接的错误消息?
  • @SteveGreene 我想要那个,但我应该在哪里添加链接?我的班级有这个 [Validacije(ErrorMessage = "There is SNN with that number")]。它显示此错误消息。但是我怎样才能得到这样的 ActionLink("There is SNN with that number", "Index", "Nebitno")
  • @ZachPedigo 我编辑了我的帖子。我希望它现在清楚了。我只是从来没有做过。不知道在哪里添加链接。

标签: asp.net-mvc


【解决方案1】:

借用 Endy 在您的链接中的回答,您可以添加一个仅在 SSN 重复时出现的链接/按钮:

// Your field name. Get message from your validation attribute
@if (ViewData.ModelState["SSN"].Errors.Any(ms => ms.ErrorMessage == "Duplicate SSN."))  
{
    // controller action that displays person needs a parameter
    @Html.ActionLink("Go to SSN", "Index", "Nebitno", new { ssn = Model.SSN } )
}

【讨论】:

  • 所以,我试过了,没用。当我在 ViewData.ModelState 中更改您的 ModelState 时,我遇到了新问题。我从我尝试的所有其他解决方案中得到的也是相同的:System.NullReferenceException:'对象引用未设置为对象的实例。 System.Web.Mvc.ModelStateDictionary.this[string].get 返回 null。
  • @dsadsdasdas 抱歉,在视图中您需要使用ViewData.ModelState。见编辑。
  • TY 但问题出在 ViewData.ModelState["SSN"]。它总是这样 System.NullReferenceException: '对象引用未设置为对象的实例。 System.Web.Mvc.ModelStateDictionary.this[string].get 返回 null。
  • “SSN”是您模型字段的名称吗?我只是编造的,因为你没有包括模型。
  • 那么您的验证属性在 Predavaci 中?然后“SSN”将变为“x.SSN”。您应该能够停止调试器并查看 ViewData.ModelState 如何返回错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多