如何管理ASP.NET参数和Javascript密钥

时间:2013-04-16 16:28:19

标签: javascript asp.net-mvc-3 visual-studio-2010

所以这是我的情景。

我使用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#端的更改保持“同步”。编译器能否以某种方式为我做这件事,还是有插件可以帮助我?

感谢。

3 个答案:

答案 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)。

值得做。如果您具有良好的集成测试覆盖率,那么您将在生产中遇到更少的错误。