所以这是我的情景。
我使用ASP.NET MVC 3以及HTML,CSS,JavaScript / JQuery来制作Web应用程序。 我正在使用Visual Studio 2010
我们已经发布了该产品(它在1.0中),但是现在我们处于项目的“维护”模式,我感觉随着项目增加了新功能,它将难以维护C#(ASP.NET MVC)和JavaScript之间的常量集。
例如,在JavaScript中我会创建一个$ .post并将其链接到MVC url Controller / Action然后我将传递参数{key1:value1,key2:value2}
问题在于,如果C#参数名称发生变化或者签名中参数的位置发生变化,我只会在运行时知道JavaScript需要更新(我假设我是一个程序员,而不是在运行时间之前就已经足够了解这个架构。)
所以我的问题是,如何更轻松地管理JavaScript方面,以便我可以与C#端的更改保持“同步”。编译器能否以某种方式为我做这件事,还是有插件可以帮助我?
感谢。
答案 0 :(得分:0)
我想不出任何简单的方法,但这可能有所帮助。当我通常开发一些网站时,首先我尝试在视图中编写尽可能少的javascript代码并将它们全部放在.js文件中,这样你可以确保你可以重用许多代码,因为所有代码都是纯javascript那里你提到的不会有任何问题。我还将所有操作的记录及其控制器和区域名称保存在数据库中,并将其用于管理权限和安全问题。对于您的问题,您可以将所有这些方法添加到数据库中,稍后使用一段代码检查此方法是否已存在。
添加到DB :(在基本控制器中,因此您无需手动执行任何操作)
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var area = filterContext.RouteData.DataTokens["area"];
string areaName = area != null ? area.ToString() : "";
var controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
string actionName = filterContext.ActionDescriptor.ActionName;
//Add to DB
base.OnActionExecuting(filterContext);
}
检查是否存在:
bool exist = false;
try
{
HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create("http://www.example.com/image.jpg");
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
exist = response.StatusCode == HttpStatusCode.OK;
}
}
catch
{
}
答案 1 :(得分:0)
您的问题询问有关同步C#常量和JavaScript常量的问题,但随后还会讨论参数名称和位置。
参数的位置在MVC世界中比名称更重要,而且我没有找到一种保持同步的好方法,而不是广泛的单元和集成测试。你在做那些测试,对吧? ;)
就实际的常量和枚举而言,我已经开始使用T4模板为我需要的常量/枚举生成.cs和(命名空间).js文件(在我的例子中,来自数据库,但也可以像其他任何东西一样容易。)
答案 2 :(得分:0)
您最好的选择是集成测试。您将能够准确测试用户将要执行的操作。 Seleno是编写集成测试的好选择(包装Selenium)。
值得做。如果您具有良好的集成测试覆盖率,那么您将在生产中遇到更少的错误。