mvc在jquery对话框中打开局部视图传递参数

时间:2014-01-17 05:20:32

标签: jquery asp.net-mvc dialog

请帮助

我有一个带有许多按钮的视图......每个按钮都有唯一的ID。我想在jquery对话框中打开局部视图。我可以看到对话框,甚至可以看到其中的部分表单,但我无法将参数传递给它。 以下脚本有效...但请注意我已在网址中对ID进行了硬编码。如何在其中放置变量而不是硬编码的ID号。非常感谢

<script>
               var ASeatId;  //this code works

               function showPersonDialog(seatId) {
                   ASeatId = seatId;
                   $('#dialog').dialog('open');
               }

               $('#dialog').dialog({
                   autoOpen: false,
                   width: 800,
                   resizable: false,
                   title: 'Edit Guest',
                   modal: true,
                   open: function (event, ui) {
                       var url = '@Html.Raw(Url.Action("Guest", "Seat", new{seatID=3}))';         
            $(this).load(url);
        },
        buttons: {
            "Save": function () {
                $(this).dialog("save");
                // prevent the default action, e.g., following a link   
                return false;
            },
            "Close": function () {
                $(this).dialog("close");
                // prevent the default action, e.g., following a link   
                return false;
            }
        }
});
           </script>

所以当我单步执行控制器代码时

  public ActionResult Guest(int? seatId)
    {


        return PartialView("_Guest");
        //return PartialView("_Guest");
    }

我可以看到数字3

我想基于按钮点击来传递变量...后面的代码不起作用

       <script>  ///this code does not work
           var ASeatId;

           function showPersonDialog(seatId) {
               ASeatId = seatId;
               $('#dialog').dialog('open');
           }

           $('#dialog').dialog({
               autoOpen: false,
               width: 800,
               resizable: false,
               title: 'Edit Guest',
               modal: true,
               open: function (event, ui) {
                   var url = '@Html.Raw(Url.Action("Guest", "Seat", new{seatID=ASeatID}))';  ///this being the variable       
        $(this).load(url);
    },
    buttons: {
        "Save": function () {
            $(this).dialog("save");
            // prevent the default action, e.g., following a link   
            return false;
        },
        "Close": function () {
            $(this).dialog("close");
            // prevent the default action, e.g., following a link   
            return false;
        }
    }
 });
       </script>

再次感谢

5 个答案:

答案 0 :(得分:2)

var url = '@Url.Action("Guest", "Seat", new{ seatID = "-1"}))';
url = url.replace("-1", ASeatId);

经常将变量放入另一个变量需要一些帮助。

当动作控制器期待搜索字符串时,有时可能需要将整数转换为数字。

var aid = ASeatId.toString();
var url = '@Url.Action("Guest", "Seat", new{ seatID = "-1"}))';
url = url.replace("-1", aid);
$(this).load(url)

大多数情况下,文档就绪的简单加载调用(如上所述)最适合我(传递模型参数)。

$(this).load('@Url.Action("Guest", "Seat", new{ seatID = Model.ASeatId}))');

答案 1 :(得分:0)

这个怎么样(在对话框的打开功能中)

 var url = '@Html.Raw(Url.Action("Guest", "Seat", new{seatID='+ASeatID+'}))';  ///this being the variable 

变量不会转到字符串。!

答案 2 :(得分:0)

就像这样使用

$("#customerTabBody").load('Home/GetCustomerList', { 'searchString': searchCriteria });

此处searchCriteria是您必须传递的参数

答案 3 :(得分:0)

var url = '@Html.Raw(Url.Action("Guest", "Seat")))
url = url + ASeatId;

答案 4 :(得分:0)

试试这段代码:

var url = "@Url.Action("Guest", "Seat")" +"/" + ASeatID;