繁体   English   中英

将部分视图数据传递给控制器

[英]Passing partial view data to controller

假设我有一个模型DailyTasks和一个模型Task。 初始视图是使用DailyTasks模型强类型化的。 它显示了一天中现有任务的列表。 用户可以通过单击添加按钮将更多任务添加到列表/表。 单击添加按钮后,我呈现了与Task模型相关联的局部视图。

我希望能够保存用户对现有任务和新添加的任务所做的任何更改。

我不确定执行此操作的最佳方法是什么。 我一直在玩模型绑定,以及创建模型的json对象,然后在保存时将其传递给控制器​​。 到目前为止,我只能将现有任务传递回“保存”控制器,而新添加的任务均未显示。

模型:

public class DailyTasks
{  
   public int ID { get; set; }
   public List<Task> TaskList{ get; set; }
}

public class Task
{
   public int Id { get; set; }
   public string MyTask { get; set; }
}

主视图:

@model Example.Models.DailyTasks

@using (Ajax.BeginForm("Save", "DailyTasks", new AjaxOptions { HttpMethod = "Post" }))
{
<input type="button" value="Add New Task" id="addBtn" />
<input type="submit" value="Save" id="saveBtn"/>

<table class="table">
    <tr>
        <th>Column Header Name Goes Here</th>
        <th>Column Header Name Goes Here</th>
    </tr>

    @for (var i = 0; i < Model.TaskList.Count(); i++)
    {
    <tr>
        <td>
            @Html.DisplayFor(m => Model.TaskList[i].ID)
            @Html.HiddenFor(m => Model.TaskList[i].ID)
        </td>
        <td>
            @Html.DisplayFor(m => Model.TaskList[i].MyTask)
            @Html.HiddenFor(m => Model.TaskList[i].MyTask)
        </td>
    </tr>
    }
</table>
}

<script type="text/javascript">
$(document).ready(function () {
    $("#addBtn").on("click", function () {
        $.get('@Url.Action("AddTask")', function (data) {
            $("table tbody").append(data);
        });
    });
 });
</script>

为部分视图添加新的任务AcitionResult:

public ActionResult AddTask()
    {
        Task model = new Task();
        return PartialView("_AddTask", model);
    }

局部视图(_AddTask):

    @model Example.Models.Task

    <tr>
        <td>
            @Html.DisplayFor(m => Model.ID)
            @Html.HiddenFor(m => Model.ID)
        </td>
        <td>
            @Html.DisplayFor(m => Model.MyTask)
            @Html.HiddenFor(m => Model.MyTask)
        </td>
    </tr>

我在这里找到了我真正需要的东西: http : //blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/现在我可以使用模型绑定方法代替传统方式(FormCollection和Request)。

我希望它对将来的人有所帮助。 另外,感谢Tobias的链接。 肯定是在讨论我提出的核心问题,但是不幸的是,发现的解决方案不适用于我的情况。

干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM