2013-05-15 73 views
7

如何在我的編輯框中設置默認值,以便萬一我不在框中寫入任何內容時,它不會發送空值。如何設置默認值HTML.EditorFor()

<div class="editor-label"> 
     @Html.Label("Description") 
     </div>           // somthing like 
     <div>@Html.EditorFor(model => model.Description, " Default value ") 
     @Html.ValidationMessageFor(model => model.Description) 
    </div> 

或者,如果我更改爲:

@Html.TextBoxFor(Model.somthing, "Default value") 

回答

0

如何定義你的模型有「默認值」,其財產以後財產?在這種情況下,你不需要做任何特別的事情。如果這並不令人滿意(例如,您不希望用戶在屏幕上看到「默認值」),那麼您可以爲此模型定製一個自定義模型綁定器,該模型從DefaultModelBinder繼承,僅覆蓋OnModelUpdated方法,沿線的東西:

model.somthg = string.IsNullOrEmpty(model.somthing) ? "Default Value" : model.somthing 

另請注意,EditorFor忽略您發送給它的自定義HTML屬性,據我所知。

11

最簡單的方法是在你的模型構造函數初始化屬性:

public class PersonModel { 
    public PersonModel() { 
     FirstName = "Default first name"; 
     Description = "Default description"; 
    } 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Description { get; set; } 
} 

而當你想將它發送到視圖,例如在PersonController.Create動作方法:

public ActionResult Create() { 
    var model = new PersonModel(); 
    return View(model); 
} 

[HttpPost] 
public ActionResult Create(PersonModel model) { 
    // do something on post-back 
} 

那是嗎。請記住,您必須創建模型的新實例並將其傳遞給視圖以使用它的默認值。因爲這種操作方法相關的觀點,期望一個PersonModel實例,但是當你使用create方法是這樣的:

public ActionResult Create() { 
    return View(); 
} 

認爲沒有什麼(我的意思是null),讓您的默認值不存在事實。

但是,如果你想爲複雜的目的做到這一點,例如使用默認值作爲水印,或者@JTMon說,你不想讓最終用戶看到默認值,你會有一些其他的解決方案。請讓我知道你的目的。

1

而不是使用

@Html.EditorFor(model => model.UserId) 

使用

@Html.TextBoxFor(model => model.UserId, new { @Value = "Prabhat" }) 
18

要顯示在一個領域,你必須在這個例子中htmlAttributes分配「值」屬性它像一個默認值:

@Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control", @Value = ViewBag.DefaultDescription } }) 

確保V中的值爲大寫。

這樣你將只是在html字段上分配一個默認值,而不是在模型中。

在模型中分配默認值將強制您首先創建模型對象,併爲非空值字段(如日期時間)設置默認值,這將使頁面顯示惱人1/1/1001 00:00:您可以在模型的其餘部分使用日期時間字段中的00值。

+0

感謝這就是我一直在尋找。大寫字母V幫助了我。爲什麼他們會這樣不一致呢? – JSideris

+0

這將與具有值屬性(如輸入)的Html元素一起使用。對於像textarea這樣的元素,我會推薦Javad_Amiry的解決方案 – CF5