0

我对 MVC-razor 很陌生,留下的代码让我有点困惑。

我的视图中有一个模型,并从该模型中创建了一个列表。

      @For Each Item in Model
                  @<li><a href="#" data-id="ItemOne">Click Me</a></li>                

然后我有一个进行绑定的javascript;

$("a[data-id]").click(function(e)
{
    $( "#PopUp" ).dialog({resizable: false, width:800, height: 400, title: ""  });
}); 

并填充这个静态窗口;

<div id="PopUp" title="PopUp">

 <h1>MyPopUp<H1>

</div>

所有这些代码都在一个视图中

我现在想用我的一些模型项目数据填充窗口(IE,我点击的项目会给我一个包含项目数据的弹出窗口)我已经进入了一个锁定的心态,我的想法是有一些使用该模型数据打开 razor 变量,然后遍历项目以创建具有给定标识符的等量 PoP-Up-window,当调用 javascript 时,我只使用那里的变量。但这只是觉得愚蠢。有没有简单(更好看)的方法来解决这个问题?

4

1 回答 1

1

你可以使用 AJAX。基本上,您可以对将返回部分视图的控制器操作有一个真正的锚点。然后当单击此锚点时,向此操作发送 AJAX 请求并更新 DOM。

我想一个例子可能是值得的:

@For Each Item in Model
    @<li>@Html.ActionLink("Click Me", "SomeAction", "SomeControllerName", New With { Key .id = item.Id }, New With { Key .class = "popup" })</li>  

然后你可以不显眼地 AJAXify 这个锚点:

$('a.popup').click(function(e) {
    $.ajax({
        url: this.href, 
        type: 'GET',
        cache: false,
        success: function(result) {
            $('#PopUp').html(result).dialog({
                resizable: false, 
                width: 800, 
                height: 400, 
                title: ''
            });
        }
    });

    return false;
});

然后当然你会有一个相应的控制器动作来呈现部分:

Function SomeAction(ByVal id as Integer)
    Dim model = ... get your model from somewhere using the id
    Return PartialView(model)
End Function
于 2013-04-05T06:33:08.830 回答