向 ReSharper 或 Visual Studio 指示 JSON 变量是模型的实例

Indicate to ReSharper or Visual Studio that JSON variable is instance of Model

我的前端库有时需要来自我的 MVC 应用程序(例如 jQGrid)的 JSON 数据。我在需要时通过将所需模型 classes 转换为 JSON 来适应这一点。但是,我 运行 遇到了一个问题,即重构此类模型有时会变得困难; ReSharper 和 Visual Studio 都无法在模型转换为 JSON 后识别此“模型访问”——仅当它在 C# 模板(老式 WebForms 或 Razor)中使用时。

有什么方法可以提示 VS 或 ReSharper,例如,在 jQGrid 中使用的 JS 变量 rowObject 等同于 C# class [=14= 的用法]?理想情况下,我可以获得智能感知之类的东西,但更重要的是,ReSharper 的 class 的“查找用法”/它的属性可以识别它在这里被使用。 (例如 MyModel.Name 的“查找用法”=> rowObject.Name 的这种用法)

// <Back-End>
public JsonResult JsonList(string userName)
{
    var model = new List<MyModel>()
    ...
    return Json(model.OrderByDescending(x => x.WhenSent), JsonRequestBehavior.AllowGet);
}

// <Front-End>
$("#jQGridExample").jqGrid({
    url: '<%= Url.Action("JsonList", "MyController") %>',
    datatype: "json",
    ...
    formatter: function (cellvalue, options, rowObject) {
    // rowObject is of type "MyModel" but neither tool will know this.
    // If I remove a property from "MyModel" without updating the JS & rowObject uses it,
    // this can become an easily missed front-end regression.
    }

不,因为不仅有 layer-wise 中断(前端与后端),而且还有技术中断 - 即 JS 与 C#。只要 compiler/R# 级别上没有 C# 和 JS 之间的直接桥梁,这就仍然不可能。

当然,您可以通过在 JS/TypeScript 中创建模型来缓解这些问题,这些模型与他们的 C# pendants 相似(意味着相同的名称、属性等)- e . G。 here and here。但它们技术上并不相同