在控制器中返回参数而不是View

时间:2017-02-20 18:19:07

标签: c# asp.net-mvc

我有一个控制器,我有一个方法,但我只在另一个控制器中使用方法,所以我不需要返回一个 查看,但我不知道我可以返回什么而不是返回View();

代码:

public ActionResult language()
   {

        if (Session["UserLanguage"].ToString() == "english")
            Session["UserLanguage"] = "spanish";
        else
            Session["UserLanguage"] = "english";

        Response.Redirect("/" + Session["UserLanguage"] + "/index");



        return View();
    }

总之,我没有View,所以VS将其标记为红色

有谁能解释一下它的基础知识?什么可以返回查看?此致

注意:App正确运行100%,但我有这个家伙

1 个答案:

答案 0 :(得分:0)

Asp.Net MVC使用约定优于配置。因此,惯例是,当您从某个操作方法获得类似return View()的语句时,框架将查找与~/Views/YourControllerName目录中的操作方法名称相同的视图或{{1} } 目录。 Visual Studio会给你一个警告,说这个地方的这个项目中没有这样的视图。

您的代码正在运行,因为~/Views/Shared不会被执行,因为上面的行会重定向到您传递的网址。只需删除return View()声明。

由于您的方法具有返回类型(return View()),因此您需要返回一些内容。您可以使用ActionResult方法并返回结果。

Redirect

由于您要重定向到应用内的操作方法,因此您可能会考虑使用public ActionResult language() { if (Session["UserLanguage"].ToString() == "english") Session["UserLanguage"] = "spanish"; else Session["UserLanguage"] = "english"; return Redirect("/" + Session["UserLanguage"] + "/index"); } 方法来消除字符串连接以生成新网址并为您构建正确的网址。

RedirectToAction

同样确保在对Session项目调用public ActionResult language() { if (Session["UserLanguage"].ToString() == "english") Session["UserLanguage"] = "spanish"; else Session["UserLanguage"] = "english"; return RedirectToAction("Index", Session["UserLanguage"] as string); } 方法之前进行空检查

ToString()