2011-10-17 43 views
-1

我创建了一个自定义模型,即支持我的Razor视图。然后,我创建了一个控制器following`namespace MyCandidate.ControllersMVC3的奇怪行为

public class CandidateViewModelController : Controller 
{ 
    // 
    // GET: /CandidateViewModel/ 

    public ActionResult Index() 
    { 
     return View(); 
    } 

} 

我也有下面的语句在我_Layout.cshtml

@Html.ActionLink("Canid", "Index", "CandidateViewModel") 

接下来,我创建了一个视图,该视图的第一个语句是

@model MyCandidate.Models.CandidateViewModel 

当我运行项目中,我得到以下错误

The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched: 

我花了3个多小时,但无法弄清楚?

回答

0
  1. Index()得不到任何参数,但你送"CandidateViewModel")添加Index(string input)方法与属性[HttpGet]到控制器。

  2. 这个错误你没有在“Views/CandidateViewModel/Index.cshtml”中查看“Index”。

  3. 也许你删除母版页文件(_ViewSrat,_layout)

  4. 或者当你的ActionLink的改变你的路线

0

更改为你犯了一个错误:

@Html.ActionLink("Canid", "Index") 

如果你想传递任何数据到View,你也可以使用ViewBag:

// Controller : 
ViewBag.CandidateValues = CandidateViewModelData; 

// View 
@Html.Label("LabelName", (CandidateViewModel) ViewBag.CandidateValues.FiledName); 
+0

谢谢@ Amir978。上周我刚刚开始创建MVC3时,我有很多问题。我的意思是从Asp Forms和Nhibernate移到EF4.1和MVC3。好的,如果你能帮我解决另一个问题。大多数情况下,我们的视图都是基于多个对象或换句话说基础表。因此,我们需要先对它进行建模,即为每个输入字段创建一个具有属性的自定义类,然后将视图基于此模型。此外,如果你可以指示我一些有用的链接。 – akberali

+0

@akberali如果您将为每个视图创建视图模型,并使用一些您需要的属性(请参见我的答案),那么要更好一些(请参阅此处的答案)http://stackoverflow.com/questions/7539069/how-should-we-pass-a-data -a-a-view-in-a-big-asp-net-mvc-web-site/7539144#7539144 –

+0

@akberali我很乐意尽可能地帮助你。首先,我建议你在ASP.NET网站上观看所有Pluralsight MVC电影免费! (http://beta.asp.net/mvc)你会在那里找到很多关于你的问题的答案。请不要犹豫,问你的问题。对于模型,是的,为每一组数据创建一个模型(类)是非常好的主意,重点是您可以在视图中访问它们(强类型模型) – Amir978