簡體   English   中英

如何使用剃刀編輯器模板使MVC模型綁定程序返回空字符串而不是null?

[英]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.Emptynull之間的區別一無所知(它與語言無關,即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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM