Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将子任务与MVC的主任务关联?_C#_Asp.net Mvc_Linq - Fatal编程技术网

C# 如何将子任务与MVC的主任务关联?

C# 如何将子任务与MVC的主任务关联?,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,我正在.net core中开发一个任务管理站点,我希望能够使用表单创建任务,然后能够创建与主任务关联的子任务。目前,我有一个视图和一个单独的视图,其中一个表单用于创建主任务,另一个视图和一个表单用于创建子任务,我想知道如何使用主任务的Id填充子任务表单上的隐藏字段,以便将它们关联起来。我不确定是否最好在同一个视图中有两个表单(一个用于创建主任务,另一个用于添加关联任务),因为我认为在不更改视图的情况下填充隐藏字段可能会更容易一些。我还希望能够在主任务表单页面的网格中列出汇总到主任务的所有子任务。

我正在.net core中开发一个任务管理站点,我希望能够使用表单创建任务,然后能够创建与主任务关联的子任务。目前,我有一个视图和一个单独的视图,其中一个表单用于创建主任务,另一个视图和一个表单用于创建子任务,我想知道如何使用主任务的Id填充子任务表单上的隐藏字段,以便将它们关联起来。我不确定是否最好在同一个视图中有两个表单(一个用于创建主任务,另一个用于添加关联任务),因为我认为在不更改视图的情况下填充隐藏字段可能会更容易一些。我还希望能够在主任务表单页面的网格中列出汇总到主任务的所有子任务。目前,我列出了表中的所有任务,这些任务与主任务关联无关,因此我想对此进行更改

这是我现在拥有的

用于创建任务和子任务的控制器

    [HttpGet]
    [Route("TaskOrder/CreateTaskOrder")]
    public IActionResult CreateTaskOrder()
    {
        CreateTaskOrderVM model = new CreateTaskOrderVM();
        model.AddSubTaskModelList = _repository.GetAddSubTasks().Result;
              
        return View(model);
    }

    [HttpPost]
    [Route("TaskOrder/CreateTaskOrder")]
    [Route("TaskOrder/CreateTaskOrder{createTaskOrder}")]
    public IActionResult CreateTaskOrder(CreateTaskOrderVM taskOrder)
    {
        if (ModelState.IsValid)
        {
            TaskOrder model = taskOrder.TaskOrderModel;

            _context.TaskOrder.Add(model);
            _context.SaveChanges();

            TempData["success"] = "Task Order Created";
            return RedirectToAction("CreateTaskOrder");
        }
        else
        {
            ViewData["Error"] = "Error Creating Task Order";
            return View();
        }
    }

    [HttpGet]
    [Route("TaskOrder/AddSubTask")]
    public IActionResult AddSubTask()
    {
        AddSubTaskVM model = new AddSubTaskVM();

        return View(model);
    }

    [HttpPost]
    [Route("TaskOrder/AddSubTask")]
    [Route("TaskOrder/AddSubTask{addSubTask}")]
    public IActionResult AddSubTask(AddSubTaskVM addSubtask)
    {
        if (ModelState.IsValid)
        {
            AddSubTask model = addSubtask.AddSubTaskModel;

            _context.AddSubTask.Add(model);
            _context.SaveChanges();

            TempData["success"] = "SubTask Added";
            return RedirectToAction("AddSubTask");
        }
        else
        {
            ViewData["Error"] = "Error Adding SubTask";
            return View();
        }
    }
我的模型课:

public class AddSubTaskVM
{
    public AddSubTask AddSubTaskModel { get; set; }
    public TaskOrder TaskOrderModel { get; set; }
}

public class CreateTaskOrderVM
{
    public AddSubTask AddSubTaskModel { get; set; }

    public List<AddSubTask> AddSubTaskModelList { get; set; }

    public TaskOrder TaskOrderModel { get; set; }
}
公共类AddSubTaskVM
{
公共AddSubTask AddSubTaskModel{get;set;}
public TaskOrder TaskOrderModel{get;set;}
}
公共类CreateTaskOrderVM
{
公共AddSubTask AddSubTaskModel{get;set;}
公开名单
子任务位置
活动名称
成本组织
评论
@foreach(模型中的AddSubTask AddSubTask.AddSubTaskModelList)
{
+
@addsubtask.FkLocationName
@addsubtask.fk活动
@addsubtask.CostOrg
@addsubtask.Comments
}
@如果(ViewData[“错误”]!=null)
{
错误:@ViewData[“Error”].ToString()

} @if(TempData[“Success”]!=null) { 成功:@TempData[“成功”].ToString()

} }
子任务视图

  <div class="col-10 container-fluid">
   <div class="text-center">
    <h4>Add SubTask</h4>
  </div>
   @using (
   Html.BeginForm("CreateTaskOrder", "AddSubTask", FormMethod.Post))
   {
      <div class="form-group">

    <div class="form-group row">
    <div class="col-2">
        <label class="col-form-label">Task Order Id:</label>
    </div>
    <div class="col-4">
        @Html.HiddenFor(m => m.TaskOrderModel.FkTaskOrderId, new {Value =""}/>
    </div>
</div>

<div class="form-group row">
    <div class="col-2">
        <label class="col-form-label">Location:</label>
    </div>
    <div class="col-4">
     <input asp-for="AddSubTaskModel.FkLocationName" />
    </div>
</div>

<div class="form-group row">
    <div class="col-2">
        <label class="col-form-label">Activity Name:</label>
    </div>
    <div class="col-4">
       <input asp-for="AddSubTaskModel.FkActivity" />
    </div>
</div>

<div class="form-group row">
    <div class="col-2">
        <label class="col-form-label">Cost Org:</label>

    </div>
    <div class="col-4">
        <input asp-for="AddSubTaskModel.CostOrg" />
    </div>
</div>

<div class="form-group row">
    <div class="col-2">
        <label class="col-form-label">Cost Org:</label>

    </div>
    <div class="col-4">
        <input asp-for="AddSubTaskModel.Comments" />
    </div>
</div>

<div class="modal-footer">
    <button asp-controller="TaskOrder" type="submit" class="btn btn-primary">Save SubTask</button>
    @Html.ActionLink("Cancel", "CreateTaskOrder", "TaskOrder")
</div>
    
</div>
}
</div>

添加子任务
@使用(
BeginForm(“CreateTaskOrder”,“AddSubTask”,FormMethod.Post))
{
任务订单Id:
@Html.HiddenFor(m=>m.TaskOrderModel.FkTaskOrderId,新{Value=”“}/>
地点:
活动名称:
成本组织:
成本组织:
保存子任务
@ActionLink(“取消”、“创建任务订单”、“任务订单”)
}
    <div class="col-10 container-fluid">
    <div class="text-center">
    <h4>Create Task Order</h4>
    <hr />
</div>
@using (
  @Html.BeginForm("CreateTaskOrder", "TaskOrder", FormMethod.Post))
{
    <div class="form-group row">
        <div class="col-3">
            <label class="col-form-label">Task Order #:</label>
        </div>
        <div class="col-5">
            <input asp-for="TaskOrderModel.TaskOrderNum" maxlength="13" style="text-transform: uppercase;" required/>
        </div>
    </div>

    <div class="form-group row">
        <div class="col-3">
            <label class="col-form-label">PR #:</label>
        </div>
        <div class="col-5">
            <input asp-for="TaskOrderModel.PrNumber" />
        </div>
    </div>

    <div class="form-group row">
        <div class="col-3">
            <label class="col-form-label">Project Name:</label>
        </div>
        <div class="col-5">
            <input asp-for="TaskOrderModel.ProjectName" style="width: 500px" required/>
        </div>
    </div>

    <div class="form-group row">
        <div class="col-3">
            <label class="col-form-label">Original Period Of Performance:</label>
        </div>

        <div class="col">
            <span>From:</span>
            <input asp-for="TaskOrderModel.PopStart" type="date" required />
        </div>
        <div class="col" style="padding-right: 275px">
            <span>To:</span>
            <input asp-for="TaskOrderModel.PopFinish" type="date" required/>
        </div>
    </div>

    <div class="form-group row" style="padding-bottom: 10px">
        <div class="col-3">
            <label class="col-form-label">Comments:</label>
        </div>
        <div class="col">
            <textarea asp-for="TaskOrderModel.Comments" style="width:600px"></textarea>
        </div>


    <a href="@Url.Action("AddSubTask","TaskOrder")" class="btn btn-primary btn-lg">Add SubTask</a>

    <table data-pagination="true">
        <tr class="thead-dark text-nowrap text-center ">
            <th>SubTask Location</th>
            <th>Activity Name</th>
            <th>Cost Org</th>
            <th>Comments</th>
        </tr>
        @foreach (AddSubTask addsubtask in Model.AddSubTaskModelList)
        {
    <tr>
        <td>&#43;</td>
        <td>@addsubtask.FkLocationName</td>
        <td>@addsubtask.FkActivity</td>
        <td>@addsubtask.CostOrg</td>          
        <td>@addsubtask.Comments</td>
        <td>                </td>
    </tr>
        }
    </table>

        @if (ViewData["Error"] != null)
        {
            <div class="red">
                <p><strong>Error:</strong> @ViewData["Error"].ToString()</p>
            </div>
        }

        @if (TempData["Success"] != null)
        {
            <div class="green">
                <p><strong>Success:</strong> @TempData["Success"].ToString()</p>
            </div>
        }

        <div class="form-group row" style="padding: 100px">
            <div class="col-3 offset-2">
                <div class="row">
                    <input asp-controller="TaskOrder" type="submit" class="btn btn-info form-control" value="Submit Task Order" />
                </div>
            </div>
        </div>
    }
    </div>
  <div class="col-10 container-fluid">
   <div class="text-center">
    <h4>Add SubTask</h4>
  </div>
   @using (
   Html.BeginForm("CreateTaskOrder", "AddSubTask", FormMethod.Post))
   {
      <div class="form-group">

    <div class="form-group row">
    <div class="col-2">
        <label class="col-form-label">Task Order Id:</label>
    </div>
    <div class="col-4">
        @Html.HiddenFor(m => m.TaskOrderModel.FkTaskOrderId, new {Value =""}/>
    </div>
</div>

<div class="form-group row">
    <div class="col-2">
        <label class="col-form-label">Location:</label>
    </div>
    <div class="col-4">
     <input asp-for="AddSubTaskModel.FkLocationName" />
    </div>
</div>

<div class="form-group row">
    <div class="col-2">
        <label class="col-form-label">Activity Name:</label>
    </div>
    <div class="col-4">
       <input asp-for="AddSubTaskModel.FkActivity" />
    </div>
</div>

<div class="form-group row">
    <div class="col-2">
        <label class="col-form-label">Cost Org:</label>

    </div>
    <div class="col-4">
        <input asp-for="AddSubTaskModel.CostOrg" />
    </div>
</div>

<div class="form-group row">
    <div class="col-2">
        <label class="col-form-label">Cost Org:</label>

    </div>
    <div class="col-4">
        <input asp-for="AddSubTaskModel.Comments" />
    </div>
</div>

<div class="modal-footer">
    <button asp-controller="TaskOrder" type="submit" class="btn btn-primary">Save SubTask</button>
    @Html.ActionLink("Cancel", "CreateTaskOrder", "TaskOrder")
</div>
    
</div>
}
</div>