JQuery将额外参数传递到Ui对话框

JQuery将额外参数传递到Ui对话框,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我正在为我的问题寻找解决办法 我正在使用MVC Razor创建一个网站 在产品列表中,我想打开一个弹出窗口(Jquery对话框),其中可以打开部分视图 但我不能让它工作 这就是我所拥有的: <table style="width:100%;" cellpadding="0" cellspacing="10" > <tr> <th>Acties</th> <th>Code</th>

我正在为我的问题寻找解决办法

我正在使用MVC Razor创建一个网站

在产品列表中,我想打开一个弹出窗口(Jquery对话框),其中可以打开部分视图

但我不能让它工作

这就是我所拥有的:

<table style="width:100%;" cellpadding="0" cellspacing="10"  >
    <tr>
        <th>Acties</th>
        <th>Code</th>
        <th>omschrijving</th>
        <th>Status</th>
        <th>Afbeeldingen</th>

    </tr>

        @foreach (var item in Model)       
        {
            Product P1 = item.Product_1;
            Product P2 = item.Product_2;

        <tr>
            <td>
                @Html.ActionImage("AddMedia", "Upload", new { id = P1.ProductId }, "../Site_images/New Document.png", 20, 20, "Afbeelding toevoegen")
                @Html.ActionImage("Details", "Products", new { id = P1.ProductId }, "../Site_images/Get Info Blue Button.png", 20, 20, "Details")
                @Html.Image("Site_images/Appointment Cool.png", 20, 20, "Reserveren")
                <button value='@P1.ProductId' id="opener">open the dialog</button>
            </td>
            <td>@P1.ProductCode</td>
            <td>@P1.Description</td>
            <td></td>
            <td>@P1.Media.Count()</td>

        </tr>

            if (P2 != null)
            {
                <tr>
                    <td>
                    </td>
                    <td>@P2.ProductCode </td>
                    <td>@P2.Description</td>
                    <td></td>
                    <td>@P2.Media.Count()</td>

                </tr>
            }




        }
</table>

活动
代码
OMSCHRIJING
地位
阿弗比尔丁根
@foreach(模型中的var项目)
{
产品P1=项目产品1;
产品P2=项目产品2;
@ActionImage(“AddMedia”、“Upload”、new{id=P1.ProductId}、../Site_images/new Document.png”、20、20、“Afbeelding toevoegen”)
@ActionImage(“详细信息”,“产品”,新的{id=P1.ProductId},”../Site_images/Get Info Blue Button.png),20,20,“详细信息”)
@Html.Image(“Site_images/Appointment Cool.png”,20,20,“Reserveren”)
打开对话框
@P1.1产品代码
@P1.说明
@P1.Media.Count()
如果(P2!=null)
{
@P2.ProductCode
@P2.说明
@P2.Media.Count()
}
}

我是一个对话框
var值;
$(函数(){
$('#dialog')。dialog({
自动打开:错误,
宽度:400,
可调整大小:false,
标题:"详情",,
莫代尔:是的,
打开:功能(事件、用户界面){
$(this.load('@Url.Action(“AddMedia”,“Upload”,new{id=“+TheValue+”)));
},
按钮:{
“关闭”:函数(){
$(此).dialog(“关闭”);
}
}
});
$(“#开场白”)。单击(函数(){
$('dialog')。dialog('open');
TheValue=$(this.attr(“value”);
});
});

如您所见,我已将产品Id传递给每个按钮(作为值) 现在,我想做的是,当您单击按钮时,按钮的值将传递给对话框打开事件,因此partioal视图将显示所选产品的数据

希望有人能帮忙。

可能只是:

$('#opener').click(function () {
        TheValue = this.value;
        $('#dialog').dialog('open');        
    });
我就是这样解决的, 只需将变量传递给JScript函数:

@{
     var HostHeader = Request.Headers["host"];
     var url = "http://" + HostHeader + Url.Content("~/Upload/AddMedia/");
 } 

    <div id="dialog" style="display: none" title="Dialog Title"></div>

    <a href="javascript:void(0)" onclick="javascript:ShowDialog('@P1.ProductId')">Show Dialog</a>


        <script type="text/javascript">

            function ShowDialog(id)
            {

                $('#dialog').dialog({
                   position: 'top',
                    autoOpen: false,
                    width: 500,
                    height:500,
                    resizable: false,
                    title: 'Upload image',
                    modal: true,
                    open: function (event, ui) {
                        $(this).load('@url' +id);
                    },
                    buttons: {
                        "Close": function () {
                            $(this).dialog("close");
                        }
                    }
                })


        </script>
@{
var HostHeader=Request.Headers[“主机”];
var url=“http://”+HostHeader+url.Content(“~/Upload/AddMedia/”);
} 
函数显示对话框(id)
{
$('#dialog')。dialog({
位置:'顶部',
自动打开:错误,
宽度:500,
身高:500,
可调整大小:false,
标题:“上传图像”,
莫代尔:是的,
打开:功能(事件、用户界面){
$(this.load(“@url”+id);
},
按钮:{
“关闭”:函数(){
$(此).dialog(“关闭”);
}
}
})

你的“渲染部分视图”在哪里?你只创建了操作,而不是使用部分视图。这就是问题所在…我不知道如何使其工作以及使用什么…是的,我注意到这是错误的顺序,但真正的问题是如何使此代码工作:$(this).load('@Url.Action(“AddMedia”,“Upload”,new{id=“+TheValue+”})”;如何使用@UrlAction,然后添加变量TheValue。我还尝试将url“固定为:$(this).load(“”+TheValue);但什么也没有发生。。
@{
     var HostHeader = Request.Headers["host"];
     var url = "http://" + HostHeader + Url.Content("~/Upload/AddMedia/");
 } 

    <div id="dialog" style="display: none" title="Dialog Title"></div>

    <a href="javascript:void(0)" onclick="javascript:ShowDialog('@P1.ProductId')">Show Dialog</a>


        <script type="text/javascript">

            function ShowDialog(id)
            {

                $('#dialog').dialog({
                   position: 'top',
                    autoOpen: false,
                    width: 500,
                    height:500,
                    resizable: false,
                    title: 'Upload image',
                    modal: true,
                    open: function (event, ui) {
                        $(this).load('@url' +id);
                    },
                    buttons: {
                        "Close": function () {
                            $(this).dialog("close");
                        }
                    }
                })


        </script>