2017-04-02 65 views
0

日期的TextBox場從View傳遞爲空值,控制器型號的textBox場傳遞爲空值在MVC到控制器

這裏是我的模型類

public class VehcileMakeModel 
    { 
     //public VehicleModel VehicleModel { get; set; } 
     //public List<VehicleMake> VehcileMakeList { get; set; } 

     [Required(ErrorMessage = "...")] 
     public string Model { get; set; } 

     [Required(ErrorMessage = "...")] 
     public DateTime? Year { get; set; } 

     [Required(ErrorMessage = "...")] 
     [Display(Name = "Make")] 
     public int SelectedMake { get; set; } 

     public IEnumerable<SelectListItem> MakesList { get; set; } 
    } 

強類型查看:

@model MvcApplication1.Models.VehcileMakeModel 

@{ 
    ViewBag.Title = "CreateMakeModel"; 
} 

<h2>CreateModel</h2> 
@using (Html.BeginForm("SaveModel", "iRateBook")) 
{ 
<table> 
    <tr> 
     <td>@Html.Label("Select Make")</td> 
     <td>@Html.DropDownListFor(m => m.SelectedMake, Model.MakesList)</td> 
    </tr> 
    <tr> 
     <td>Enter Model </td> 
     <td>@Html.TextBoxFor(m => m.Model)</td> 
    </tr> 
    <tr> 
     <td>Enter Model Year</td> 
     <td> 
      @Html.TextBoxFor(m=>m.Year) 
     </td> 
    </tr> 
    <tr><td><input type="submit" value="Save" /> </td></tr> 
</table> 
} 

當我點擊保存按鈕輸入的文本框的值必須傳遞給控制器​​。

控制器名稱

public ActionResult SaveModel(VehcileMakeModel VMM) 
     { 
      int ? makeid = VMM.SelectedMake; 
      string strModel = VMM.Model.ToString(); 

      VehicleDataContext obj = new VehicleDataContext(); 
      // obj.VehicleModels.Add(VMM); 

      obj.SaveChanges(); 


      return View("index"); 
     } 

enter image description here

爲什麼也門裏亞爾場傳球爲Null值控制器?

+1

您可能輸入了無效的日期。 –

+0

我作爲2017輸入 –

+0

你是對的Anupam Singh,謝謝 –

回答

1

問題是,您將Year屬性指定爲DateTime?而不是int/string。 默認的模型聯編程序期望日期以應用程序文化定義的格式發送。例如,如果你在web.config中設置

<globalization uiCulture="en-US" culture="en-US" /> 

型粘合劑將期望MM/DD/YYYY日期格式(不包括部分時間。

既然你只需要一年的時間,我只想年屬性更改爲是整數

public int? Year { get; set; } 

如果你確實需要模型上的日期時間屬性(我懷疑),你可以創建它,它基於Year屬性:

public class VehcileMakeModel 
{ 
    [Required(ErrorMessage = "...")] 
    public int? Year { get; set; } 

    public DateTime? YearDt 
    { 
     return this.Year.HasValue ? new DateTime(this.Year.Value,1,1) : null; 
    } 
} 
相關問題