Passing a complex object from a view to a controller / view in ASP.NET MVC

In my MVC application, I had a problem transferring data from the view to the controller. I have quite complex domain classes:

public class TaskBase : PersistableObject
{
    public virtual TaskCategory Category { get; set; }
    public virtual IList<TaskNote> Notes { get; set; }
    public virtual string TaskTitle { get; set; }
    public virtual string TaskBody { get; set; }
    public virtual DateTime? CreationTime { get; set; }
    public virtual User CreatedBy { get; set; }
    public virtual int CompletionRatio { get; set; }
}

public class MainTask : TaskBase
{
    public virtual IList<TaskBase> ChildTasks { get; set; }
    public virtual User AssignedTo { get; set; }
    public virtual IList<TaskHistory> History { get; set; }
}

public class TaskFormModel : ViewDomainBase
{
    public MainTask Task { get; set; }
    public LoginForm LoginInfo { get; set; }
}

And, in my opinion, I want to pass an instance of TaskFormModel to the controller.

<%= Html.ActionLink<TaskController>("Edit Task", (x) => x.Edit(new TaskFormModel() { Task = item, LoginInfo = Model.LoginInfo }))%>

And here is the controller action:

public ActionResult Edit (TaskFormModel taskInfo)
{
    return View(ViewPageName.TaskDetailsForm, task.Task);
}

taskInfo null, . , . , , , , , . ? , , , ?

. , , - , , , /db .

+3
2

:

GET :

public ActionResult Edit (int id)
{
    var model = taskRepository.GetTaskEditModel(id);
    return View(ViewPageName.TaskDetailsForm, model);
}

ActionLink:

<%= Html.ActionLink("Edit Task", "Edit", "Task", new { model.Task.id })%>

, html POST.

+4

-, - . : , . , .

, , , ActionLink, id, .

, .

0

Source: https://habr.com/ru/post/1726192/


All Articles