我知道jQuery目前是每个人都亲爱的锤子(说实话,我也很迷恋它),但我想知道使用Razor / C#动态生成html是否更优雅或更容易。例如,要更新页面,请考虑此Razor伪代码:
@{
var divContent = functions.getDivContent("Platypus");
if(IsPost)
{
divContent = functions.getDivContent(request[mammalName]);
}
else
{
;//anything?
}
}
//函数中的getDivContent()函数(未显示)返回动态生成的html
HTML伪代码:
<body>
<form method="POST" action="" >
<input type="Select" name="mammalName" ... />
</form>
<div>@divContent</div>
</body>
jQuery伪代码:
$('mammalName').selectionChanged() {
$('form').submit();
});
在jQuery函数中执行所有这些操作,例如使用json数据和调用.getJson(),可以避免需要完整的页面刷新,但无论如何都必须查询服务器的数据,所以我不喜欢我不知道这是否真的有这样的优势,特别是在我的情况下,刷新页面的部分是页面的大部分。
我的思维/设计有缺陷吗?是否有令人信服的理由在Razor上选择jQuery?
答案 0 :(得分:1)
是的,在选择使用ajax更改页面或使用整页重新加载来更改页面时,一定要考虑一些事项。
在性能方面,使用ajax总是名列前茅,因为你只需要整个页面一次,然后使用ajax来请求部分内容。
就维护而言,您实际上不需要更改任何服务器端以使用ajax而不是Razor。唯一增加的维护是编写客户端代码,以正确处理页面不会重新加载的事实。
如果您使用了Ajax,则可以优化对ajax的请求,使您的页面仅返回所需内容而不是整个页面,从而进一步提高性能。这需要花费很少的维护成本,因为它增加了另一层复杂性,但是,如果做得好,很容易维护。
明智的用户体验,由于无需重新加载页面,ajax通常会更好。除非您也将其编码到客户端(也不是很困难),否则会丢失后退按钮功能。如果你将SEO添加到等式中,除非你将你的网站编码为没有ajax工作,否则事情变得更加困难,然后在其上添加ajax功能,爬虫仍然可以在没有ajax的情况下访问整个网站。< / p>