2016-07-24 28 views
3

嗨我想在創建視圖中默認與'DateTime.Now'的日期。並設置「活動」字段設置爲「真」默認值在MVC創建視圖之前http post

下面的代碼做的是,在控制器中的下列行爲:

// POST: RequestTypes/Create 
// To protect from overposting attacks, please enable the specific properties you want to bind to, for 
// more details see http://go.microsoft.com/fwlink/?LinkId=317598. 
[HttpPost] 
[ValidateAntiForgeryToken] 
public async Task<ActionResult> Create([Bind(Include = "Id,RequestTypeDescription,LastUpdated,Active,Team")] RequestType requestType) 
{ 
    if (ModelState.IsValid) 
    { 
     db.RequestTypes.Add(requestType); 
     requestType.LastUpdated = System.DateTime.Now; 
     requestType.Active = true; 
     await db.SaveChangesAsync(); 
     return RedirectToAction("Index"); 
    } 

    ViewBag.Team = new SelectList(db.Teams, "Id", "TeamDescription", requestType.Team); 
    return View(requestType); 
} 

這是默認完成保存所做的httppost代碼。

我想要做的是默認的字段,以便它們顯示在創建視圖第一被推出 - 在以下的動作下面的代碼:

// GET: RequestTypes/Create 
public ActionResult Create() 
{ 
    ViewBag.Team = new SelectList(db.Teams, "Id", "TeamDescription"); 
    ViewBag.LastUpdated = System.DateTime.Now; 
    return View(); 
} 

我創建視圖代碼創建標準通過MVC腳手架:

@model ManageHR5.Models.RequestType 

@{ 
    ViewBag.Title = "Create"; 
} 

<h2>Create</h2> 

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     <h4>RequestType</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="form-group"> 
      @Html.LabelFor(model => model.RequestTypeDescription, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.RequestTypeDescription, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.RequestTypeDescription, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.LastUpdated, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.LastUpdated, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.LastUpdated, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.Active, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       <div class="checkbox"> 
        @Html.EditorFor(model => model.Active) 
        @Html.ValidationMessageFor(model => model.Active, "", new { @class = "text-danger" }) 
       </div> 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.Team, "Team", htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.DropDownList("Team", null, htmlAttributes: new { @class = "form-control" }) 
       @Html.ValidationMessageFor(model => model.Team, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Create" class="btn btn-default" /> 
      </div> 
     </div> 
    </div> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval")} 

當我運行該應用程序,並啓動創建頁面時,創建頁面啓動時不顯示默認值。

我不理解什麼?

(新手到MVC :()

+0

不要設置這些值在視圖中。在將該對象保存在POST方法中之前立即設置它們。 –

回答

0

您設置在模型上獲取所提供的意見

您設置指示顯示的目的

// GET: RequestTypes/Create 
public ActionResult Create() {   
    ViewBag.Team = new SelectList(db.Teams, "Id", "TeamDescription"); 
    var model = new RequestType(); 
    model.LastUpdated = System.DateTime.Now; 
    model.Active = true; 
    return View(model); 
} 

但是像他們緊接在將對象保存在POST方法中之前

+0

好的謝謝。是的,這些值將在保存在POST方法中之前設置。默認值現在顯示在GET中,包含模型。 –