簡體   English   中英

ASP.NET MVC中ModelState.AddModelError中的關鍵參數有什么意義?

[英]What is the point of the key parameter in ModelState.AddModelError in ASP.NET MVC?

我在我的控制器中添加了驗證檢查,如果驗證失敗,則會修改ModelState

例如:

private bool ValidateMoney(string raw, string name, decimal min, decimal max) {
    try {
        var dec = Convert.ToDecimal(raw);

        if (dec < min) {
            throw new ArgumentOutOfRangeException(name + " must be >= " + min);
        }
        else if (dec > max) {
            throw new ArgumentOutOfRangeException(name + " must be <= " + max);
        }
    }
    catch (Exception ex) {
        ModelState.AddModelError(name, ex.GetUserMessage());
    }
    return ModelState.IsValid;
}

但是,我永遠不知道在ModelState.AddModelError傳遞key參數的值。 (在示例中,我只是將其設置為我的UI顯示名稱。)

參數是什么以及我應該如何使用它?

ValidationMessage HTML Helper使用密鑰來了解要顯示的確切錯誤消息。

例:

<%=Html.TextBox("Name") %> <br />
<%=Html.ValidationMessage("Name") %>

ValidationMessage幫助程序將顯示ModelState字典中具有鍵“Name”的消息。

key參數可用於將驗證錯誤與表單字段相關聯,從而控制消息在屏幕上的顯示位置。 它既可以與HtmlHelper類型的輸入一起使用,也可以與簡單的HTML輸入一起使用。

如果您使用了@Html.TextBoxFor (或類似)和@Html.ValidationMessageFor ,則可以從要驗證的字段的HTML name中獲取密鑰的值(使用Inspect Element)。

如果您剛剛使用了HTML <input> ,則可以使用@Html.ValidationMessage("AKeyIMadeUp")添加驗證占位符,並在其中顯示一條消息: ModelState.AddModelError("AKeyIMadeUp", "The value you entered is no good");

實際上,您可以在表單提交失敗時設置任何驗證消息,假設您在模型中創建了一個字段

[Required]
    [DataType(DataType.Password)]
    [Display(Name = "Current password")]
    public string OldPassword { get; set; }

當你的modelState失效時你可以設置錯誤消息綁定到該字段,如as。

ModelState.AddModelError("OldPassword", "Current Password do not match ");

那么你的錯誤信息將與名為“OldPassword”的模型中的字段綁定

對不起Necropost。 上面的答案沒有我認為有用的細節(這是我正在尋找的!!)

為了創建“模型范圍”驗證錯誤 - 然后您只需添加string.Empty作為您的密鑰。

例如

ModelState.AddModelError(string.Empty, "This is my Model Level Message");

感謝: http//www.tutorialsteacher.com/mvc/htmlhelper-validationsummary提示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM