Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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 5 MVC使用下拉菜单和单独的控制器共享局部视图_Asp.net Mvc 5 - Fatal编程技术网

Asp.net mvc 5 MVC使用下拉菜单和单独的控制器共享局部视图

Asp.net mvc 5 MVC使用下拉菜单和单独的控制器共享局部视图,asp.net-mvc-5,Asp.net Mvc 5,我所追求的是拥有一个局部视图,其中包含系统中所有可用语言的下拉列表。此局部视图将在许多编辑模板中使用,并将从单独的控制器加载 根据网上的文章和信息,我有以下实现: 视图模型 public class LanguagesViewModel { public int SelectedID { get; set; } public virtual SelectList Languages { get; set; } public LanguagesViewModel(int

我所追求的是拥有一个局部视图,其中包含系统中所有可用语言的下拉列表。此局部视图将在许多编辑模板中使用,并将从单独的控制器加载

根据网上的文章和信息,我有以下实现:

视图模型

public class LanguagesViewModel
{
    public int SelectedID { get; set; }

    public virtual SelectList Languages { get; set; }

    public LanguagesViewModel(int selectedID, IEnumerable<Language> languages)
    {
        SelectedID = selectedID;
        Languages = new SelectList(languages, "LanguageId", "Name");
    }
}
我有一个LanguageController,它具有以下实现

    public ActionResult GetAllLanguages()
    {
        var languages = service.GetAll();
        return PartialView("_LanguageDropDownList", new LanguagesViewModel(1, languages));
    } 
因此,上面的内容是为了加载该部分视图中的下拉列表,以便我可以在其他模板中使用它

从从不同控制器(应用程序设置)加载的模板中,我使用以下方法调用局部视图:

    @Html.Action("GetAllLanguages", "LanguageController")
这不管用。它抛出一个异常: 路径“/ApplicationSetting/Edit/1”的控制器未找到或未实现IController

对于这种情况,正确的实现是什么


感谢Asp.Net MVC中的当我们制作一个新控制器时,
'controller'
后缀会自动附加到控制器名称,例如:-在您的情况下,如果您为控制器指定
'Language'
名称,那么控制器的完整名称将类似于
'LanguageController'
,因此,无论你想在哪里给控制器命名,你都必须只使用
'Language'
而不是
'LanguageController'
,而
@Html.Action()
的重载之一是
控制器名
,它只是
'Language'
,而不是
'LanguageController'
,因此在你的问题中只需更改
@Html.Action(“GetAllLanguages”,“LanguageController”)
@Html.Action(“GetAllLanguages”,“Language”)
一起使用,您的问题就会得到解决。

只需将Html.Action改为…@Html.Action(“GetAllLanguages”,“Language”)我知道它很小…非常感谢。那为什么它不是LanguageController呢?函数的第四个重写是actionName,controllerName。
    @Html.Action("GetAllLanguages", "LanguageController")