2016-11-24 7 views
0

Я пробую без успеха следующие изменения на простом CRUD.C# Model Binding изменить свойство до 'db.SaveChanges'

APP содержит 2 модели, 2 контроллера и виды CRUD для каждого контроллера.

Контроллеры «Магазины» и «Продукты». Мне нужно создать новый магазин, а затем создать продукты, связанные с этим новый магазин созданный

«Создать» вид имеет следующее:

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

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

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

Как вы можете видеть, 3 свойства, местоположение, описание и ноты , Код контроллера:

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "Location,Description,Notes,StoreCode")] Store store) 
    { 

     if (ModelState.IsValid) 
     { 

      db.Stores.Add(store); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     return View(store); 
    } 

Я пытаюсь добавить в этой привязки модели четвертое свойство называется «код филиала» вставить в моей базе данных, как

StoreCode.DateTime.Now.ToFileTime(); 

Но я не хочу, чтобы пользователь создайте это на представлении. Я хочу автоматически назначить это значение в базе данных. Я иду в правильном направлении? Спасибо

+0

Нет необходимости включать 'StoreCode' как этот' Bind (Include = "Расположение, описание, заметки") 'а затем установить его перед' db.Stores.Add (магазин) 'что-то вроде этого' store.StoreCode = "yourcode" ' – RizkiDPrast

ответ

0

Не передавайте его как модель с точки зрения. Просто установите его в контроллере.

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "Location,Description,Notes")] Store store) 
    { 

     if (ModelState.IsValid) 
     { 
      store.CreateDate = DateTime.Now; 
      db.Stores.Add(store); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     return View(store); 
    }