我有一个控制器,我有一个方法,但我只在另一个控制器中使用方法,所以我不需要返回一个 查看,但我不知道我可以返回什么而不是返回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%,但我有这个家伙
答案 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()