0
我有一个包含一些必需属性的视图模型的运输和帐单信息的表单。ASP.NET MVC模型验证忽略已变为只读的输入
下面是足以解释问题的一段代码。
提取视图模型的:
public class CheckoutViewModel
{
[Required]
public string ShippingPostalCode { get; set; }
[Required(ErrorMessage = "*")]
public string BillingPostalCode { get; set; }
}
提取剃刀形式:
@Html.TextBoxFor(m => m.ShippingPostalCode, new { @class = "form-control", placeholder = "Postal code" })
@Html.TextBoxFor(m => m.BillingPostalCode, new { @class = "form-control", placeholder = "Postal code", data_bind = "attr: { 'readonly': billingSameAsShipping }" }) @Html.ValidationMessageFor(model => model.BillingPostalCode)
我使用基因敲除,使计费域(包括BillingPostalCode)只读如果复选框被使用检查可观察到的billingSameAsShipping变量。
<input type="checkbox" data-bind="checked: billingSameAsShipping" id="billingSameAsShippingCheckbox" />
如果未选中复选框,并且BillingPostalCode为空,则验证将正确触发。 但是,如果BillingPostalCode为空,但复选框已选中,则只会将该字段设置为只读,但不会触发验证,并且ModelState的IsValid的值为true。
任何线索如果这个预期的行为,或想法如何解决它?
任何帮助表示赞赏。谢谢。
编辑:如果有帮助,我添加了JavaScript代码。
var shipping = {
billingSameAsShipping: ko.observable(false)
};
ko.applyBindings(shipping);
$("#billingSameAsShippingCheckbox").on("change", function() {
if (this.checked) {
$("#BillingPostalCode").val($("#ShippingPostalCode").val());
}
});
禁用(只读)复选框不会将值发送到服务器。 在这个链接中提到了很多解决方法,可以帮助你:http://stackoverflow.com/questions/4727974/how-to-post-submit-an-input-checkbox-that-is-disabled – Boney
你可以发布你的淘汰赛代码? – Yanga
已禁用的字段不会发布,但只读发布状态良好。模型状态也是有效的。问题只在于客户端验证。 –