第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

自定義驗(yàn)證屬性的 ValidationContext 缺少字段

自定義驗(yàn)證屬性的 ValidationContext 缺少字段

C#
青春有我 2023-08-13 16:07:20
我正在使用 MVC 5。我正在編寫一個(gè)表單,供用戶向內(nèi)部應(yīng)用程序提交索賠,并且在創(chuàng)建索賠時(shí),我需要根據(jù)用戶的當(dāng)前余額驗(yàn)證用戶的索賠金額。如果金額大于余額(例如 10 美元對(duì) 5 美元),它會(huì)拒絕,并要求他們將余額清零。我認(rèn)為最好將余額作為CurrentBalance視圖模型上的(不可編輯的)屬性,并使用自定義驗(yàn)證屬性來(lái)比較兩個(gè)值。我將其呈現(xiàn)為表單上的只讀字段。當(dāng)用戶選擇要提交到哪個(gè)程序(例如 HRA)時(shí),ajax 請(qǐng)求會(huì)根據(jù)他們選擇的程序填寫當(dāng)前余額。問(wèn)題在于,當(dāng)視圖模型實(shí)例作為我的屬性的一部分傳遞時(shí)ValidationContext,它CurrentBalance?始終顯示為零。所以無(wú)論余額是多少,驗(yàn)證無(wú)一例外都會(huì)失敗。我嘗試CurrentBalance在視圖上創(chuàng)建一個(gè)普通的非只讀字段,并在提交之前自行設(shè)置值。我還嘗試在渲染視圖之前在控制器中設(shè)置值。無(wú)論哪種情況,它仍然為零,如上圖所示。我的自定義屬性如下:public class ClaimAmountAttribute : ValidationAttribute{? ? protected override ValidationResult IsValid(object value, ValidationContext validationContext)? ? {? ? ? ? var claim = (ClaimCreateViewModel)validationContext.ObjectInstance;? ? ? ? var amount = (decimal)value;? ? ? ? if (claim.CurrentBalance - amount < 0)? ? ? ? {? ? ? ? ? ? return new ValidationResult(GetErrorMessage());? ? ? ? }? ? ? ? return ValidationResult.Success;? ? }? ? public string GetErrorMessage() => "Amount must be less than balance; please zero out balance instead.";}以下是我觀點(diǎn)的相關(guān)部分 - 不過(guò),只讀屬性是否存在似乎并沒(méi)有什么區(qū)別:@model ClaimCreateViewModel<div class="form-group">? ? @Html.LabelFor(model => model.CurrentBalance, htmlAttributes: new { @class = "control-label col-md-2" })? ? <div class="col-md-10">? ? ? ? @Html.EditorFor(model => model.CurrentBalance, new { htmlAttributes = new { @class = "form-control", @readonly = "readonly" } })? ? </div></div><div class="form-group">? ? @Html.LabelFor(model => model.Amount, htmlAttributes: new { @class = "control-label col-md-2" })? ? <div class="col-md-10">? ? ? ? @Html.EditorFor(model => model.Amount, new { htmlAttributes = new { @class = "form-control" } })? ? ? ? @Html.ValidationMessageFor(model => model.Amount, "", new { @class = "text-danger" })? ? </div></div>似乎我所做的一切都沒(méi)有產(chǎn)生 的CurrentBalance價(jià)值ValidationContext。請(qǐng)幫幫我。
查看完整描述

1 回答

?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊

事實(shí)證明,我的 POST 操作的屬性[Bind]丟失了CurrentBalance。驗(yàn)證發(fā)生在操作之前,但這并不重要;[Bind]在此之前采取行動(dòng),以防止過(guò)度發(fā)布。我已經(jīng)更新了該操作,現(xiàn)在可以使用了:


public ActionResult Create([Bind(Include = "TransactionID,Amount,CurrentBalance")] ClaimCreateViewModel claim)

    // ...

}


查看完整回答
反對(duì) 回復(fù) 2023-08-13
  • 1 回答
  • 0 關(guān)注
  • 137 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)