kmp*_*kmp 8 c# asp.net asp.net-mvc razor asp.net-mvc-3
我正在使用ASP .NET MVC 3,我有一个有趣的问题需要解决,我希望得到一些建议.
我有一个页面里面有很多div.每个div的内容随着时间的推移而变化,因此目前我为每个div运行一个计时器,它向服务器发出$ .ajax请求,返回带有div更新内容的PartialViewResult.局部视图非常复杂,并引用其他视图.
这种方法的问题在于它不能很好地扩展.可能是每个用户都有很多这样的计时器在运行,而且很多用户服务器都在不断受到攻击.因此,我宁愿向服务器发出一个请求,该请求可能返回多个div内容,因此它将是:
div1 { some html }
div2 { some html }
Run Code Online (Sandbox Code Playgroud)
...
然后在客户端上,我可以将每个HTML位置放在页面上的正确位置.
我认为我能做的就是从服务器返回JSON但我的问题是 - 如何获取HTML?目前剃刀编译器将运行并将我的部分视图cshtml文件转换为HTML但是如果我返回JSON,是否可以以编程方式调用razor编译器?
我在这里找到了Razor引擎:http://razorengine.codeplex.com/似乎做了我想要的但是可以用vanilla ASP NET MVC做到这一点吗?
或者,考虑到问题,有没有更好的方法可以实现我的目标?
谢谢你的帮助!
创建一个Action,返回一个渲染所有这些PartialViews的新PartialView.例如一个动作:
public PartialViewResult AggregatedAction(args)
{
return PartialView();
}
Run Code Online (Sandbox Code Playgroud)
视图包含:
@Html.Action("IndividualAction1", null)
@Html.Action("IndividualAction2", null)
@Html.Action("IndividualAction3", null)
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx.
这样只有一个请求,并且从正确的位置(即视图)调用渲染引擎.
然后使用结果,您可以搜索各种div并替换客户端中的html.
$('div#id1').html('div#id1',$(data));
$('div#id2').html('div#id2',$(data));
Run Code Online (Sandbox Code Playgroud)
如果您的页面结构允许,您应该使用:http://api.jquery.com/load/(如@Jorge所说)用一行替换所有的html.
$('div#targetDiv').load('Controller\AggregatedAction', anyData);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1280 次 |
| 最近记录: |