Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 将字符串参数上的MVC视图Intellisense警告获取到常规方法_Asp.net Mvc_Visual Studio 2015_Intellisense - Fatal编程技术网

Asp.net mvc 将字符串参数上的MVC视图Intellisense警告获取到常规方法

Asp.net mvc 将字符串参数上的MVC视图Intellisense警告获取到常规方法,asp.net-mvc,visual-studio-2015,intellisense,Asp.net Mvc,Visual Studio 2015,Intellisense,VisualStudio的Intellisense知道哪些视图文件可用 如果我写这封信(故意打字): 然后它将发出呜呜声,而不是在它下面划下划线并说“无法解析视图”。 这很可爱 如果我想添加一层间接寻址,并通过另一个函数传入“Create”: [HttpGet] public ActionResult Create() { return ArbitraryIndirection("Craete"); } public ActionResu

VisualStudio的Intellisense知道哪些视图文件可用

如果我写这封信(故意打字):

然后它将发出呜呜声,而不是在它下面划下划线并说“无法解析视图”。 这很可爱

如果我想添加一层间接寻址,并通过另一个函数传入“Create”:

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

    public ActionResult ArbitraryIndirection(string viewName)
    {
        return View(viewName, new KeywordViewModel());
    }
然后我就失去了这种行为。Intellisense不知道,
ArbiraryIndirection
需要一个视图目标,所以它不检查。 这一点也不奇怪,但令人难过

我能教智能感知变得更聪明吗

是否有什么东西告诉Intellisence参数是特殊的(我猜可能是一个XML注释引用,或者是一个属性?)


我可以对间接视图引用进行写时错误检查吗?

我已经有一年没有这样做了,但当时是ReSharper为我巧妙地验证了视图

如果您使用的是ReSharper,则可以使用
JetBrains.Annotations
程序集中的
[AspMvcView]
属性,您可以通过Nuget将其包括在内。jetbrains网站上的相关指南如下:

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

公共静态MvcHtmlString WidgetWrapperAction(此HtmlHelper html、[AspMvcAction]字符串操作、[AspMvcController]字符串控制器,对象参数)
{
var routeValueDictionary=新的routeValueDictionary(参数){{{“area”,“AreaName”};
var htmlString=html.Action(操作、控制器、routeValueDictionary);
if(string.IsNullOrWhiteSpace(htmlString.ToHtmlString()))
{
htmlString=html.Action(“WidgetLoadFailed”、“WidgetLoadFailed”、新RouteValueDictionary{{{“area”、“AreaName”});
}
返回htmlString;
}

希望这有帮助。

看起来很完美。谢谢
    [HttpGet]
    public ActionResult Create()
    {
        return ArbitraryIndirection("Craete");
    }

    public ActionResult ArbitraryIndirection(string viewName)
    {
        return View(viewName, new KeywordViewModel());
    }
    public static MvcHtmlString WidgetWrapperAction(this HtmlHelper<dynamic> 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;
    }