[英]Changing Name attribute in MVC razor, breaks Model
我有以下模型:
public class Patient
{
public DateTime DOB { get; set; }
public DateTime DateCreated { get; set; }
[Required] // FullName is required
public string FullName{ get; set; }
public virtual Address Address { get; set; }
}
該地址是一個相關實體。
public class Address
{
public string Street { get; set; }
...
}
我正在使用formvalidation.io (formvalidation.io)來確保必填字段。
formvalidation.io的一段代碼顯示了json的結構
fields: {
FullName: {
validators: {
notEmpty: {
message: 'The full name is required'
}
}
}...
哪個按預期工作。
關於我的相關地址實體,我的自動剃刀視圖為:
@Html.TextBoxFor(x => x.Address.Street, new { @class = "form-control" })
這將創建以下HTML
<input class="form-control" data-val="true" data-val-required="The Street field is required." id="Address_Street" name="Address.Street" type="text" value="">
因此,我張貼了我的表格,除了驗證不起作用之外,所有信息都存在,包括相關的“地址”信息。
如果返回formvalidation.io,則無法將字段重命名為以下內容,因為它不是正確的JSON:
fields: {
**Address.Street**: {
validators: {
notEmpty: {
message: 'The street is required'
}
}
}
因此,我在Razor視圖上更改了“名稱”屬性,如下所示:
@Html.TextBoxFor(x => x.Address.Street, new { @class = "form-control", Name = "Street" })
我已經刪除了“地址”。 來自我的formvalidation.io JSON,因此我只有與輸出的HTML中的“名稱”屬性匹配的“街道”。 驗證一切正常。 問題是當我實際使用張貼信息時,“地址”元素為null。 沒有與地址有關的信息被發布,感覺像我可以通過更改元素上的“名稱”屬性來使用驗證,但不接收數據,或者我通過獲取數據而丟失了驗證。
我可以同時擁有數據和驗證嗎?
親切的問候
編輯
我的表格是通過ajax提交的。 驗證成功后,將運行以下JavaScript:
$.ajax({
type: 'POST',
url: "add",
data: $('#form-validation').serialize(),
dataType: "json",
success: function (resultData) { alert("Save Complete") }
});
雖然Address.Street
不是有效的JSON標記,但'Address.Street'
是有效的。 這應該允許JSON正確驗證。
您的JSON應該看起來像。
fields: {
'Address.Street': {
validators: {
notEmpty: {
message: 'The street is required'
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.