1

我有一个模型,它有几个字段并包含一个列表。我需要一个允许用户输入父字段然后输入多个子字段的视图。我的问题是我不知道他们要添加多少子对象。我需要视图以允许他们根据需要添加尽可能多的子对象。

我假设我需要子对象的部分视图,但我如何允许他们将部分视图多次添加到页面?

编辑

这是我到目前为止所拥有的,但它只是将 append 方法中的代码呈现为屏幕上的文本。

 $(document).ready(function () {
     $("#AddProgramTrainingButton").click(function (e) {



         $("#ProgramTraining").append('@@{Html.RenderPartial("_ProgramTrainingDetailsCreate",new Online.Models.ProgramTrainingDetailsViewModel());}</br></br>');

         e.preventDefault();

     });
 });

---------第二次编辑

我尝试使用 jquery 通过在控制器中调用局部视图来加载局部视图,但这也不起作用。

     $(document).ready(function () {
         $("#AddProgramTrainingButton").click(function (e) {

             alert("button clicked!");



             $('#ProgramTraining').load('@Url.Action("GetCreatePartialView","PGTController")');
             return false;



         });
     });

// controller method
        public ActionResult GetCreatePartialView() 
        {
            return PartialView("_ProgramTrainingDetailsCreate.cshtml",new PGTProgramTrainingDetailsViewModel());
        }

我需要删除文件扩展名并且在 jquery 中缺少一些结束字符

4

4 回答 4

2

我得到了这个工作。我将部分视图包装在一个 div 中

 $(document).ready(function () {

     // This section is to remove a Dynamically added Training section when a button is clicked
     $("#RemoveTrainingButton").live('click', function (e) {
         e.preventDefault();


         $(this).closest('div').remove();

     });



     // This section adds a Training section to the page when a button is clicked
     $("#AddProgramTrainingButton").click(function (e) {
         e.preventDefault();
         var url = '@Url.Content("~/PGT/GetCreatePartialView")';
         $.get(url, null, function (data) {
             $('#ProgramTraining').append(data);
         }, 'html').error(function (error) {
             alert(error);
         });








     });
 });

    [HttpGet]
    public ActionResult GetCreatePartialView() 
    {
        return PartialView("_ProgramTrainingDetailsCreate",new PGTProgramTrainingDetailsViewModel());
    }
于 2012-07-17T21:37:01.747 回答
2

罗纳德,看看这篇博文……我用它,它很完美。

http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

于 2012-07-17T20:22:41.300 回答
0

您可以使用 jQuery 检索局部视图并将其插入到主页面的 DOM 中。查看loadajax函数。您需要连接某种控制来触发异步加载。您的部分视图将从控制器操作返回(不同于完整视图,例如 /Controller/MyPageAction 和 /Controll/MySubformAction,其中 MyPageAction 是完整结果而 MySubformAction 是部分结果)。

您可以依赖明确的用户操作(单击按钮),也可以在用户开始填写最后一组可用的子字段时自动提供一组新的子字段。

于 2012-07-17T18:34:43.580 回答
0

我建议有一个图像/按钮指示字段添加,然后单击,您可以编写一个简单的处理程序来在表单中插入部分视图或任何其他表单字段。如果你保持插入字段的名称相同,那么它们将作为一个数组提交到服务器中,你可以从那里解析和查找。

于 2012-07-17T15:49:36.423 回答