Это происходит потому, что при использовании инфраструктуры MVC значения передаются из представления в контроллер через name
элемента HTML.
В вашей форме есть 3 текстовых поля:
DateSlots
-
StartTime
-
EndTime
Итак, когда вы используете шаблон Html.EditorFor
примерно так:
@Html.EditorFor(model => model.DateSlots , new { htmlAttributes = new { @class = "form-control" } })
Это переводится в HTML примерно так:
<input type="text" id="DateSlots" name="DateSlots" class="form-control" />
Итак, в вашем контроллере вы ожидаете значение, основанное на имени параметра date
, но примечание над именем - DateSlots
.
Короче, вам просто нужно изменить имя вашего параметра на dateSlots
:
[HttPost]
public ActionResult Createslots(string startTime, string endTime, DateTime dateSlots)
OR
ЛУЧШЕЕ РЕШЕНИЕ
Видя, что вы используете EditorFor
, вы используете Модель / Класс (Slots
) вверху экрана, так что вы можете просто сделать это в своем контроллере:
[HttPost]
public ActionResult Createslots(Slot mySlot)
{
using (MYDb db = new MYDb())
{
Slot obj = new Slot();
obj.Starttime = Convert.ToDateTime(mySlot.StartTime);
obj.EndTime = Convert.ToDateTime(mySlot.EndTime);
obj.DateSlots = mySlot.DateSlots;
db.Slots.Add(obj);
db.SaveChanges();
}
return View();
}
Надеюсь, это поможет.