是否有一种干净的方法来管理我的 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) 代码并保持整洁。
