Razor / Javascript,最佳实践

时间:2013-04-05 06:25:44

标签: c# jquery vb.net asp.net-mvc-3 razor

我对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,我点击的项目给我一个带有项目数据的弹出窗口),我已经达到了锁定的心态,我的想法是某种带有该模型数据的开放剃刀变量,然后遍历项目以创建具有给定标识符的相等数量的PoP-Up-window,当调用javascript时我只使用那里的变量。但这只是觉得愚蠢。是否有任何简单(更好看)的方法来解决这个问题?

1 个答案:

答案 0 :(得分: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>  

然后你可以不引人注意地AJAX化这个锚:

$('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