C# 使用ASP.NET MVC数据绑定视图模型显示JQuery对话框的最佳方法
想象一下,一个简单的页面上有一个用户列表。选择用户将显示一个JQuery模式对话框,其中包含可编辑的各种详细信息。比如:C# 使用ASP.NET MVC数据绑定视图模型显示JQuery对话框的最佳方法,c#,javascript,jquery,model-view-controller,jquery-ui,C#,Javascript,Jquery,Model View Controller,Jquery Ui,想象一下,一个简单的页面上有一个用户列表。选择用户将显示一个JQuery模式对话框,其中包含可编辑的各种详细信息。比如: @model IEnumerable<UserRole> @if (Model.Any()) { foreach (var user in Model.Users) { <a href="#" id="user-details-link" onclick="userDetailsOpen(@user.id)">Detai
@model IEnumerable<UserRole>
@if (Model.Any())
{
foreach (var user in Model.Users)
{
<a href="#" id="user-details-link" onclick="userDetailsOpen(@user.id)">Details</a>
}
}
同样,它是有效的,但我发现用这种方法有几个大问题:
a) 它打破了我的“把一切都放在一起”的规则。在查看时,如果不进行搜索,其他开发人员将不知道此Div中将加载哪些部分视图
b) 部分视图弹出窗口的所有Java脚本现在都需要在母版页中引用,而不是在部分视图本身中引用
c) 当请求页面时,如果页面很大,则需要一些时间才能显示该页面
底线问题是,您认为在保持代码组织的同时,将模型绑定填充的局部视图显示为模式对话框的最佳方式是什么
我的理想方案是预加载所有部分视图字段,然后在请求对话框显示填充了数据的模型时,将预加载的部分视图绑定到新的JSon数据集,而不加载/重新加载所有部分视图字段。
有办法吗
另外,我尝试过的一件事是使用@Html.partial(“UserDetails”,new User)
预加载我的部分视图字段,然后使用JQuery.replaceWith()
方法替换Div内容,但不幸的是,我无法让它工作
任何想法都很感激。没有好主意,因为这是坏主意。
谢谢。将部分代码加载到partial中,然后使用操作返回更新partial容器,这没什么错
<div id="ParitalContainer">
@Html.Partial("_PartialView", Model.PartialModel)
</div>
@Html.Partial(“\u PartialView”,Model.PartialModel)
或者,您可以考虑使用JSON数据的场景。也就是说,通过调用
$.ajax
或$.getJSON
异步加载所有数据。您的操作结果将返回JsonResult
,然后您可以只更新所需的元素。
此外,如果您想要更健壮的解决方案,可以考虑使用Knockout.js。如果我想“把一切都放在一起”的话,我会这么做。谢谢你,托米斯拉夫。例如,我的局部视图包含5个选项卡和数百个字段。在页面加载时呈现一次,然后根据所选链接条件重新加载,这是不对的。你不同意吗?我不确定这是否是最好的方法,但这是我最终选择的道路。
var url = "/MyController/MyAction/" + Id;
$("#palceholder").load(url).dialog('open');
<div id="ParitalContainer">
@Html.Partial("_PartialView", Model.PartialModel)
</div>