如果提交了如下所示的表單,並且MyField
在表單上留空,則默認情況下,Asp.Net Core模型綁定會將null置於模型的相應屬性中,如下所示。Asp.Net核心模型綁定,如何獲得空字段綁定爲空字符串?
示例形式
<form asp-controller="SomeController" asp-action="SomeAction">
<label asp-for="MyField">My Field</label><input asp-for="MyField" type="text" />
<button type="submit">Submit</button>
</form>
範例模型
public class MyModel{
public string MyField { get; set; }
}
實施例處理法
[HttpPost]
public IActionResult Post(MyModel m) {
//m.MyField will be null if the field was left empty
//but I want it set to a blank string by the model binder
}
但是,由於MyField
實際上是在Http Post主體中傳輸的,所以我希望模型綁定器將模型上的MyField
屬性設置爲空字符串,而不是將其設置爲null。如果MyField
未在Http Post主體中傳輸,我寧願保留空值。如何更改模型聯編程序以顯示此行爲?
如果能夠發揮作用,那將會非常酷。這將是一個如此簡單的解決方案。但我只是試過,唉,MyField仍然是空的。在for字段留空的情況下,看來模型聯編程序顯式地將該值設置爲null。爲了確保我在調試器中重複了幾次測試,觀察不同的值。如果我將默認值設置爲「hello」,那麼hello會按照預期返回到model屬性中,但如果將默認值設置爲String.Empty,則返回null。 –
用適合的解決方案更新了我的答案 –
這很有效,如果該屬性爲空但手動將屬性手動設置爲空白字符串,但兩個方法都模糊了該字段是否被回發並且需要代碼始終應用程序。我真正想要的是一種全局改變模型聯編程序的方法,這樣我只需要在一個地方改變這種行爲。 –