2014-04-17 22 views
3

在我的Razor view中。我有類似這樣的標記:在Razor EditorFor模板中防止呈現默認值

<div class="form-group"> 
    @Html.LabelFor(model => model.Principal, new { @class = "control-label col-md-3" }) 
    <div class="col-md-8"> 
     @Html.EditorFor(model => model.Principal) 
    </div> 
</div> 

主要有所需的數據註解,所以我html呈現爲這樣:

<input class="text-box single-line" data-val="true" data-val-number="The field Principal must be a number." data-val-required="The Principal field is required." id="Principal" name="Principal" type="text" value="0.00"> 

我想正是這種行爲,只是沒有默認值。有沒有辦法做到這一點,而不創建我自己的編輯器模板?

本金是小數。在這種情況下,將它設爲空是不可取的,我想強制用戶輸入一個有效的數字。

回答

4

我假設Principle是您模型中的一個十進制類型。十進制類型是值類型且不可爲空,因此.net必須始終分配一個值。如果你不這樣做,它會分配默認值。

如果您不想使用默認值,則必須使該屬性可以爲空。

+0

它是一個十進制值。由於其他約束,使其不可選爲 – BrendanMcKee

+0

@BrendanMcKee - 您打算如何使非空值不包含值然後?魔法? –

+0

我希望表單爲空並強制用戶輸入內容。如果他們沒有發佈,它會返回一條錯誤消息 – BrendanMcKee

1

有一種方法可以通過Jquery。在您的型號no need中製作property nullable

如果您的Textbox具有默認值,只需通過Jquery重新指定值即可。

$(document).ready(function() { 
    if($('#Principle ').val() == '0.00' || $('#Principle ').val() == '0') 
    { 
     $('#Principle ').val(''); 
    } 
}); 

當頁面一旦準備就緒/完成加載時,將觸發此操作。

如您所知,如果您未指定Value Types的值,則會分配.Net Framework默認值。