2016-01-18 3 views
0

Спасибо за помощь. Я работал над тем, чтобы все остальное работало, поэтому я могу сосредоточиться на этой проблеме. Я все еще убежден, что это будет легкое решение, как только мы его взломаем. У меня есть следующий код, извините, я его так сильно изменил, мне пришлось начинать снова после того, как я сделал настоящий беспорядок последнего, не беря резервную копию.Тэг Вспомогательные формы: asp-for не работает как ожидалось

 public IActionResult Index() 
    { 

     if(IndexModel.GlobalTasks == null) 
     { 
      IndexModel initModel = new IndexModel(); 
      initModel.AllTasks = InitList(); 
      initModel.EmptyTask = new ToDoTask(); 
      IndexModel.GlobalTasks = initModel.AllTasks; 
     } 
     IndexModel model = new IndexModel(); 
     model.AllTasks = IndexModel.GlobalTasks; 
     model.EmptyTask = new ToDoTask(""); 
     return View(model); 
    } 
    //Create Task 
    public IActionResult Create(ToDoTask indexModel) 
    { 
     IndexModel.GlobalTasks.Add(indexModel); 
     return RedirectToAction("Index"); 
    } 

И:

@model DE.Models.IndexModel 
<h2>To Do List</h2> 
<form asp-action="Create"> 
    <input asp-for="EmptyTask" value="@Model.EmptyTask" /> 
    <input asp-for="EmptyTask.TaskDetails" placeholder="New Task" /> 
    <button type="submit">Add Task</button> 
</form> 

Хорошей новостью является то, что создает новый ToDoTask. Таким образом, код контроллера должен быть близок к месту. Проблема заключается в том, что представление передает null данные контроллеру, поэтому я получаю пустую задачу, чего я не хочу. Любые идеи?

+0

Вы пытались отлаживать, чтобы узнать, что такое ошибка и где она происходит? –

ответ

1

Ваше действие контроллера ожидает объект ToDoTask, в то время как ваше представление использует объект TaskViewModel.

Попробуйте использовать один и тот же тип в обоих из них.

0

В вашем методе Create() вам нужно создать экземпляр объекта ToDoTask, я думаю. Так что попробуйте это:

[HttpPost] 
public IActionResult Create(ToDoTask newTask) 
{ 
    newTask = new ToDoTask(); 

    return RedirectToAction("Index"); 
} 

Вам также может понадобиться вернуть ToDoTask объект.

+0

Спасибо за попытку, но это не трюк. Я создал объект и попытался вернуть его, как вы сказали, но мы получаем ответ со статусом 500. – MGDavies

Смежные вопросы