KWo*_*dra 63 javascript asp.net-mvc modal-dialog twitter-bootstrap
我当时希望使用Twitter Bootstrap Modal窗口作为局部视图.但是,我并不认为它的设计是以这种方式使用的; 它似乎意味着以相当静态的方式使用.尽管如此,我认为能够将其用作局部视图会很酷.
例如,假设我有一个游戏列表.点击给定游戏的链接后,我想从服务器请求数据,然后在"当前页面顶部"的模态窗口中显示有关该游戏的信息.
我做了一些研究,发现这个帖子类似但不完全一样.
有没有人尝试过成功或失败?任何人都有jsFiddle或他们愿意分享的某些来源?
谢谢你的帮助.
Sha*_*lle 123
是的,我们已经这样做了.
在你的Index.cshtml中你会有类似的东西..
<div id='gameModal' class='modal hide fade in' data-url='@Url.Action("GetGameListing")'>
<div id='gameContainer'>
</div>
</div>
<button id='showGame'>Show Game Listing</button>
Run Code Online (Sandbox Code Playgroud)
然后在JS中为同一页面(内联或单独的文件中,你会有这样的东西..
$(document).ready(function() {
$('#showGame').click(function() {
var url = $('#gameModal').data('url');
$.get(url, function(data) {
$('#gameContainer').html(data);
$('#gameModal').modal('show');
});
});
});
Run Code Online (Sandbox Code Playgroud)
使用控制器上的方法看起来像这样..
[HttpGet]
public ActionResult GetGameListing()
{
var model = // do whatever you need to get your model
return PartialView(model);
}
Run Code Online (Sandbox Code Playgroud)
您当然需要在Views文件夹中使用名为GetGameListing.cshtml的视图.
我使用mustache.js和templates(你可以使用任何JavaScript模板库).
在我看来,我有这样的事情:
<script type="text/x-mustache-template" id="modalTemplate">
<%Html.RenderPartial("Modal");%>
</script>
Run Code Online (Sandbox Code Playgroud)
...这让我将模板保存在一个名为的部分视图中Modal.ascx:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<div>
<div class="modal-header">
<a class="close" data-dismiss="modal">×</a>
<h3>{{Name}}</h3>
</div>
<div class="modal-body">
<table class="table table-striped table-condensed">
<tbody>
<tr><td>ID</td><td>{{Id}}</td></tr>
<tr><td>Name</td><td>{{Name}}</td></tr>
</tbody>
</table>
</div>
<div class="modal-footer">
<a class="btn" data-dismiss="modal">Close</a>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我在视图中为每个模态创建占位符:
<%foreach (var item in Model) {%>
<div data-id="<%=Html.Encode(item.Id)%>"
id="modelModal<%=Html.Encode(item.Id)%>"
class="modal hide fade">
</div>
<%}%>
Run Code Online (Sandbox Code Playgroud)
...并使用jQuery进行ajax调用:
<script type="text/javascript">
var modalTemplate = $("#modalTemplate").html()
$(".modal[data-id]").each(function() {
var $this = $(this)
var id = $this.attr("data-id")
$this.on("show", function() {
if ($this.html()) return
$.ajax({
type: "POST",
url: "<%=Url.Action("SomeAction")%>",
data: { id: id },
success: function(data) {
$this.append(Mustache.to_html(modalTemplate, data))
}
})
})
})
</script>
Run Code Online (Sandbox Code Playgroud)
然后,你只需要一个触发器:
<%foreach (var item in Model) {%>
<a data-toggle="modal" href="#modelModal<%=Html.Encode(item.Id)%>">
<%=Html.Encode(item.DutModel.Name)%>
</a>
<%}%>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
119723 次 |
| 最近记录: |