2016-02-29 27 views
3

我在.NET MVC 5中有一個表單,其中用戶可以編寫一個數字,默認值爲「0」,如果用戶刪除了數字例如「233」離開這個領域是空的。表單不會提交。如何將默認值設置爲空EditorFor-field在發佈表單時.NET MVC

如何提交空白字段?

public class myModel 
{ 
    public int nummer { get; set; } 
    public myModel(){} 
    public myModel(int i) {this.nummer = i;} 
} 

剃刀代碼:

using (Html.BeginForm("myAction", "myController", FormMethod.Post, new { @class = "form-inline" })) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true, "", new { @class = "text- danger" }) 
    @Html.EditorFor(model => model.nummer, new { htmlAttributes = new { @class = "form-control " } }) 
    <input type="submit" value="submit" name="btnSubmit"/> 
} 

我不感興趣驗證錯誤消息,但有值設置爲「0」,默認情況下。

+0

public int? nummer {get;組; }更改爲此 –

回答

3

DefaultModelBinder使用無參數構造函數初始化您的模型(您的第二個構造函數從不調用)。你需要做的屬性可爲空,以防止客戶端和服務器端驗證錯誤

public int? nummer { get; set; } 

,然後在POST方法,測試空,如果是這樣,該值設置爲0

if(!model.nummer.HasValue) 
{ 
    model.nummer = 0; 
} 

或者你可以寫你自己的ModelBinder,對於null值和ModelBinder測試,將該值設置爲0

1

您將需要設置你的nummer網絡現在是可以爲空的類型,如下所示:

public class myModel 
{ 
    public int? nummer { get; set; } 
    ... 
} 

這將允許用戶提交沒有輸入值的表單。

那麼你的控制器操作中,您將需要如果該字段爲空指定一個默認值:

if (model.nummer == null) model.nummer = 0; 

或者,你可以使用私有財產,像這樣:在

public class myModel 
{ 
    private int? privateNummer { get; set; } 

    public int? nummer 
    { 
     get { return this.privateNummer == null ? 0 : this.privateNummer; } 
     set 
     { 
      this.privateNummer = value; 
     } 
    } 
} 
0

您控制器在將模型傳遞迴視圖之前,請執行此操作。

model.find(id); 
    model.nummer =0; 

    return View(model) 
相關問題