[英].NET MVC: how to get the model binder to assign null to a list property?
[英]how to get MVC model binder to return empty string instead of null with razor editor template?
我有一個名為String的編輯器模板,該模板具有以下html:
<input type="text" name="@ViewData.ModelMetadata.PropertyName"
value="@(Model != null ? Model : string.empty)" style="width: 200px" />
由於某些原因,如果我不填寫文本框,則在發回時,視圖模型上數據類型String的屬性為null。 我設置此編輯器模板的方式,這些值不應該為空字符串嗎? 我很好奇為什么這行不通。
我在想我唯一的替代方法是創建自己的自定義模型綁定程序,該綁定程序將自動將所有空值轉換為數據類型“字符串”的string.empty。
有什么建議嗎?
我設置此編輯器模板的方式,這些值不應該為空字符串嗎?
不。
我很好奇為什么這行不通。
HTTP協議對String.Empty
和null
之間的區別一無所知(它與語言無關,即Perl,PHP,Java,Phyton會做什么?)。 所有值都作為字符串傳遞,因此沒有null的概念。 默認的ModelBinder僅返回null,因為它比String.Empty
更為實用(也就是說,在參數上下文中,null通常表示不傳遞任何值)。
如何使用剃刀編輯器模板使MVC模型綁定程序返回空字符串而不是null?
就剃刀編輯器而言,這是不可能的。 請記住,HTTP是不可知論的,因此您有很多選擇。 自定義ModelBinder,通過Javascript / jQuery輸入檢測指定值的隱藏字段,在驗證過程中修改值(IValidateObject)等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.