如何根据标签更改验证消息
How can I change Validation messages based on the label
我的模型中有一个 'VehiclePrice' 字段,我在其中使用了不同的标签。我有 3 个不同的 'divs',其中只有一个会根据 'Car'、'Truck' 或 'SUV' 的下拉选择显示。标签为 "Sedan Price"、"Truck Price" 和 "SUV Price"。我是 MVC 的新手,作为一名数据库专家,我不喜欢创建 3 个不同的字段来保存相同内容的想法 - "Price"。当它发出 "Required" 或 "Range" 消息时,我需要验证消息来引用特定标签,即“Car Price is required”,“ 卡车 价格必须在 10000 到 900000 之间”,等等,而不仅仅是 "Price is required"。为什么?因为同一个'div'里还有其他"Price"个标签。
我的指示是我需要使用 @Html 验证内容,这似乎很难修改。
是否有一种简单的方法来覆盖消息或至少在其前面添加或附加 "Car"、"Truck" 或 "SUV"?或者也许是一种覆盖某些 'data-val-*' 属性的方法。
我会在您的视图模型中添加车辆类型 属性,并在您的视图中使用布尔变量通过 document.ready 中的 JQuery 将文本框设置为启用或未启用] 事件。如果 disabled 变量为 false,则文本框的验证将被忽略。为每种车辆类型使用下面的代码 div.
@Html.TextBoxFor(r => r.VehiclePrice, new { @type = "range", min = 10000, max = 15000 }, disabled)
@Html.ValidationMessageFor(r => r.VehiclePrice,"Price must be between 10000 and 15,000")
首次呈现视图时,jquery-validate
会解析验证消息。您可以根据 selected 车辆类型更改 VehiclePrice
属性 的相关 data-val-*
属性,然后重新解析验证器。假设 select 的 html 是
<select id="vehicletype">
<option value="Car">Car</option>
<option value="Truck">Truck</option>
</select>
然后是脚本
$('#vehicletype').change(function() {
// Update error message
var message= 'The ' + $(this).val() + ' price is required';
$('#VehiclePrice').attr('data-val-required', message);
// Reparse validator
$('form').data('validator', null);
$.validator.unobtrusive.parse($('form'));
});
请注意,如果您 return 视图
,您还需要检查车辆类型 post 并调整 ModelState 错误消息以适应
我的模型中有一个 'VehiclePrice' 字段,我在其中使用了不同的标签。我有 3 个不同的 'divs',其中只有一个会根据 'Car'、'Truck' 或 'SUV' 的下拉选择显示。标签为 "Sedan Price"、"Truck Price" 和 "SUV Price"。我是 MVC 的新手,作为一名数据库专家,我不喜欢创建 3 个不同的字段来保存相同内容的想法 - "Price"。当它发出 "Required" 或 "Range" 消息时,我需要验证消息来引用特定标签,即“Car Price is required”,“ 卡车 价格必须在 10000 到 900000 之间”,等等,而不仅仅是 "Price is required"。为什么?因为同一个'div'里还有其他"Price"个标签。 我的指示是我需要使用 @Html 验证内容,这似乎很难修改。 是否有一种简单的方法来覆盖消息或至少在其前面添加或附加 "Car"、"Truck" 或 "SUV"?或者也许是一种覆盖某些 'data-val-*' 属性的方法。
我会在您的视图模型中添加车辆类型 属性,并在您的视图中使用布尔变量通过 document.ready 中的 JQuery 将文本框设置为启用或未启用] 事件。如果 disabled 变量为 false,则文本框的验证将被忽略。为每种车辆类型使用下面的代码 div.
@Html.TextBoxFor(r => r.VehiclePrice, new { @type = "range", min = 10000, max = 15000 }, disabled)
@Html.ValidationMessageFor(r => r.VehiclePrice,"Price must be between 10000 and 15,000")
首次呈现视图时,jquery-validate
会解析验证消息。您可以根据 selected 车辆类型更改 VehiclePrice
属性 的相关 data-val-*
属性,然后重新解析验证器。假设 select 的 html 是
<select id="vehicletype">
<option value="Car">Car</option>
<option value="Truck">Truck</option>
</select>
然后是脚本
$('#vehicletype').change(function() {
// Update error message
var message= 'The ' + $(this).val() + ' price is required';
$('#VehiclePrice').attr('data-val-required', message);
// Reparse validator
$('form').data('validator', null);
$.validator.unobtrusive.parse($('form'));
});
请注意,如果您 return 视图
,您还需要检查车辆类型 post 并调整 ModelState 错误消息以适应