如何管理ASP.NET参数和Javascript键

如何管理ASP.NET参数和Javascript键,javascript,asp.net-mvc-3,visual-studio-2010,Javascript,Asp.net Mvc 3,Visual Studio 2010,这是我的设想 我使用ASP.NETMVC3以及HTML、CSS、JavaScript/JQuery来制作一个web应用程序。 我正在使用VisualStudio2010 我们已经发布了该产品(其版本为1.0),但是现在我们处于项目的“维护”模式,我有一种感觉,随着项目添加了新功能,维护C#(ASP.NET MVC)和JavaScript之间的常量集将更加困难 例如,在JavaScript中,我将创建一个$.post并将其链接到MVC url控制器/操作,然后传入参数{key1:value1,ke

这是我的设想

我使用ASP.NETMVC3以及HTML、CSS、JavaScript/JQuery来制作一个web应用程序。 我正在使用VisualStudio2010

我们已经发布了该产品(其版本为1.0),但是现在我们处于项目的“维护”模式,我有一种感觉,随着项目添加了新功能,维护C#(ASP.NET MVC)和JavaScript之间的常量集将更加困难

例如,在JavaScript中,我将创建一个$.post并将其链接到MVC url控制器/操作,然后传入参数{key1:value1,key2:value2}

问题在于,如果C#参数名称发生变化,或者如果参数在签名中的位置发生变化,我只会在运行时知道JavaScript需要更新(我假设我是一个程序员,对体系结构了解不够,无法在运行时之前完成这项工作)

所以我的问题是,如何更轻松地管理JavaScript端,使我能够与C端所做的更改保持“同步”。编译器能否以某种方式为我做到这一点,或者是否有一个插件可以帮助我


谢谢。

我想不出任何简单的方法,但这里有一些可能会有所帮助。当我通常开发一些网站时,首先我尝试在视图中编写尽可能少的javascript代码,并将它们全部放在.js文件中,这样您就可以确保可以重用许多代码,因为所有代码都是纯javascript,所以不会有您提到的任何问题。我还将所有操作及其控制器和区域名称记录在数据库中,并将其用于管理权限和安全问题。对于您的问题,您可以将所有这些方法添加到数据库中,然后通过一段代码检查这个方法是否存在

添加到数据库:(在基本控制器中,因此不需要手动执行任何操作)

检查是否存在:

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
 {
 }

您的问题询问了同步C#常量和JavaScript常量的问题,但也谈到了参数名称和位置

在MVC世界中,参数的位置比名称更重要,而且我还没有找到一种好的方法来保持这些参数的同步,而不需要大量的单元和集成测试。你在做这些测试,对吗?;)


至于实际的常量和枚举,我已经开始使用T4模板为我需要的常量/枚举生成一个.cs和一个(命名空间的).js文件(在我的例子中,是从数据库中生成的,但也可能是其他任何东西)。

集成测试是最好的选择。您将能够准确地测试用户将执行的操作。是编写集成测试的一个好选择(它包装了Selenium)


这是值得做的。如果您具有良好的集成测试覆盖率,您将在生产中遇到较少的bug。

更改或参数的位置没有任何影响。听起来你想实现一个设计模式?像是和否一样,这更多是为了以同步的方式或多或少地管理C#常量和Javascript常量,而管理在JSF中进行的函数调用没有简单的方法。。。
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
 {
 }