Skip to main content
 首页 » 编程设计

c#之Asp.Net Mvc之从服务器切换到 Ajax

2024年01月13日32lidabo

是否有一种干净的方法来管理我的 Asp.Net Mvc 网站,使其在启用/禁用 javascript 时都能正常工作。因为,就目前而言,我必须像那样破解才能使两者都起作用。我认为这不会使代码易于维护和重用...

if (Request.IsAjaxRequest())  
{                         
    return PartialView("SignUpForm", user); 
} 
else  
{ 
    return View("SignUp", user); 
} 

请您参考如下方法:

在这个回答中,我概述了一种无需 javascript 即可正常工作的模态窗口技术;如果您想禁用所有模式和 javascript 功能,则无需更改代码。

Simple ASP.NET MVC CRUD views opening/closing in JavaScript UI dialog

我认为对您来说最重要的部分是自定义 ViewEngine:

public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) 
{ 
    //you might have to customize this bit 
    if (controllerContext.HttpContext.Request.IsAjaxRequest()) 
        return base.FindView(controllerContext, viewName, "Modal", useCache); 
 
    return base.FindView(controllerContext, viewName, "Site", useCache); 
} 

此代码通过加载单独的 MasterPage(无论请求是否来自 ajax)来关闭 javascript 和周围的模板。通过在您自己的自定义 ViewEngine 中切换母版页,您可以避免所有 Controller 中的 if(Ajax) 代码并保持整洁。