MVC3在加载事件时将数据从jquery模式对话框传递给控制器

时间:2012-03-23 19:07:35

标签: javascript jquery asp.net-mvc-3 dialog modal-dialog

我试图将按钮的值传递给模态对话框。我的按钮事件如下所示:

//Dialog Function=============================================================
    //declaring the function
    $(function () {
        $('#dialog').dialog({
            autoOpen: false,
            hide: 'fade',
            show: 'fade',
            width: 350,
            height: 270,
            resizable: false,
            modal: true,
            dialogClass: 'dialog',
            open: function (event, ui) {               
                $(this).load('@Url.Action("AddFiles", "ProjectDetails")');
            }
        });
    });

    //Showing the dialog when one of the 3 buttons is clicked.
    $("button[name='Add']").click(function () {
        $('#type').val($(this).val());   
        $('#dialog').dialog('open');                 
    });
    //=========================================================================

Iim将值传递给我的模态div中的隐藏字段:

@Html.Hidden("type")

所以我需要把它变成一个HiddenFor,为此我需要传递一个modelview类 在我的AddFiles方法

public ActionResult AddFiles()
    {
        return View();
    }

这将是我的模特:

public class FileViewModel 
{
    public string Name { get; set; }
   public string type { get; set; }
   public string comments { get; set; }        
 }

但我不知道如何将按钮的值赋予我将创建的模型(模型将具有字符串类型属性)是否有办法做到这一点或我没有选择与独立隐藏工作领域?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的事情,有一个简单的解决方案。你需要传入id然后打开对话框。这是php中的一个例子。我在mvc中做同样的事情,所以一旦我有了发布它的语法。

这是链接。 http://groups.google.com/group/jquery-en/browse_thread/thread/13a3a580b4128d3d

另外,我忘了提到如果你将数据传递给模型,你需要一个构造函数来创建该类的实例,即:

var DataBuilderList = new List<FileViewModel>();
DataBuilderList.Add(new FileViewModel{ name = "thename", type = "thetype", comments = "comments" });

您需要从控制器调用一个方法,该方法在传递给操作后执行该操作。

如果我错了或有任何评论,请告诉我。好运“。

顺便说一下,它的语法与jquery相同:

open: function () { $(this).load('ProjectDetails/AddFiles', {  : id }), function () { }
}

你需要在按钮名称的动作结果中添加一个参数,但这应该适用于我认为你正在做的事情。