我正在开发一个采用ASP.NET MVC3(Razor)技术的项目。 现在,我有一个控制器:
public class Home: Controller
{
public ActionResult Result(string id)
{
return View(id);
}
}
我已将MapRoute设置如下:
context.MapRoute(
"Home_result",
"Home/Result/{id}",
new { controller="Home", action = "Result"}
);
当我在浏览器中输入网址http://domain.com/Home/Result/abc123时,显示一个名为“结果”的视图。但事实并非如此。 相反,它在下面给了我一个例外:
The view 'Result' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Home/abc123.cshtml
~/Views/Home/abc123.vbhtml
~/Views/Shared/abc123.cshtml
~/Views/Shared/abc123.vbhtml
不奇怪不是吗? 任何人都可以帮我弄清楚我犯了什么错误吗?
答案 0 :(得分:3)
return View(id);
返回名称为ID的值(.cshtml)的视图,而不是名为result.cshtml的视图。 我认为这是因为Id是一个字符串。您是否尝试将ID传递给视图?
要返回与控制器操作名称匹配的视图,只需使用
return View();
如果你想将该值传递给视图,那么出于任何疯狂的原因,使用viewbag是最简单的方法,因为字符串id用于声明视图名称。
ViewBag.ID = id;
return View();
然后在视图中使用您存储的值。是的Razor HTML默认编码。
@ViewBag.ID