当前位置:  开发笔记 > 后端 > 正文

获取MVC查看字符串参数上的Intellisense警告到一般方法

如何解决《获取MVC查看字符串参数上的Intellisense警告到一般方法》经验,为你挑选了1个好方法。

Visual Studio的Intellisense知道哪些View文件可用.

如果我写这个(错误的故意):

    [HttpGet]
    public ActionResult Create()
    {
        return View("Craete", new KeywordViewModel());
    }

然后它会发出呜呜声,而不是强调它并说"无法解析视图".这很可爱.

如果我想添加一个间接层,并通过另一个函数传递"Create":

    [HttpGet]
    public ActionResult Create()
    {
        return ArbitraryIndirection("Craete");
    }

    public ActionResult ArbitraryIndirection(string viewName)
    {
        return View(viewName, new KeywordViewModel());
    }

然后我失去了这种行为.智能感知不知道ArbitraryIndirection期待一个视图的目标,所以它不检查.这并不奇怪,但令人难过.

我可以教Intellisense更聪明吗?

是否有一些东西告诉Intellisence这个参数是特殊的(我猜一个XML注释引用,或者一个属性,也许?)或者它是否在某个地方被魔术硬编码到Intellisence?

我可以在间接View参考上获得写入时错误检查吗?



1> David E..:

我在大约一年内没有这样做过,但当时正是ReSharper巧妙地验证了我的观点.

如果您使用的是ReSharper,则可以使用程序[AspMvcView]集中的属性JetBrains.Annotations- 您可以通过Nuget包含该属性.相关指南出现在jetbrains网站的此链接上:

https://blog.jetbrains.com/dotnet/2011/12/07/providing-intellisense-navigation-and-more-for-custom-helpers-in-aspnet-mvc/

以下是[AspMvcAction][AspMvcController]属性的示例用法(请注意,您需要使用该[AspMvcView]属性,但我没有使用该代码的代码)

    public static MvcHtmlString WidgetWrapperAction(this HtmlHelper html, [AspMvcAction] string action, [AspMvcController] string controller, object parameters)
    {
        var routeValueDictionary = new RouteValueDictionary(parameters) { { "area", "AreaName" } };
        var htmlString = html.Action(action, controller, routeValueDictionary);
        if (string.IsNullOrWhiteSpace(htmlString.ToHtmlString()))
        {
            htmlString = html.Action("WidgetLoadFailed", "WidgetLoadFailed", new RouteValueDictionary { { "area", "AreaName" } });
        }
        return htmlString;
    }

希望这可以帮助.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有