我似乎无法弄清楚如何从我的视图访问我的模型。我很困惑。
这是我的家庭控制器。我已经确认“标本”正在填充数据库中的数据:
public class HomeController : Controller
{
wildtropEntities wildlifeDB = new wildtropEntities();
public ActionResult Index()
{
ViewData["CurrentDate"] = System.DateTime.Now.ToString("MM/dd/yyyy");
var specimens = from s in wildlifeDB.specimen1
select s;
return View(specimens);
}
}
以下是我的观点中的几个片段:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<% foreach (WildlifeTropical.Models.specimen s in ??????)
{ %>
<div>s.Name</div>
<% } %>
我以为我能够访问“标本”,因为我将它从控制器传递给视图(即返回视图(标本))......但它无效。
答案 0 :(得分:3)
您必须将您的观点强烈输入到specimen
的集合中,这是您从控制器操作(IEnumerable<specimen>
)传递给它的内容:
<%@ Page
Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<IEnumerable<WildlifeTropical.Models.specimen>>" %>
<% foreach (WildlifeTropical.Models.specimen s Model) { %>
<div><%= Html.Encode(s.Name) %></div>
<% } %>
请注意视图如何继承System.Web.Mvc.ViewPage<IEnumerable<WildlifeTropical.Models.specimen>>
,现在它已强烈输入到specimens
的集合中,您可以循环使用。
这就是说,我个人不喜欢在我的观点中编写foreach循环。他们让他们看起来很难看。在这种情况下,我会使用显示模板:
<%@ Page
Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<IEnumerable<WildlifeTropical.Models.specimen>>" %>
<%= Html.DisplayForModel() %>
然后我将定义一个显示模板,它将自动为模型集合的每个元素(~/Views/Shared/DisplayTemplates/specimen.ascx
)呈现:
<%@ Control
Language="C#"
Inherits="System.Web.Mvc.ViewUserControl<WildlifeTropical.Models.specimen>" %>
<div>
<%= Html.DisplayFor(x => x.Name) %>
</div>
查看specimen.ascx
用户控件现在如何强类型为System.Web.Mvc.ViewUserControl<WildlifeTropical.Models.specimen>
。这是因为它将针对主视图模型的每个样本进行渲染。
答案 1 :(得分:0)
我不确定MVC2。在MVC 3(使用Razor View Engine)中,我可以将Model / ViewModel传递给View。
@model MyProject.ViewModel.UserViewModel
@{
ViewBag.Title = "Welcome To My Site";
}
<div class="divSubHead">
<h2>Hello @Model.FirstName</h2></div>
答案 2 :(得分:0)
这个怎么样?请注意页面的继承。
<%@ Page Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of IEnumerable(Of Specimen))" %>
<% foreach (WildlifeTropical.Models.specimen s in Model)
{ %>
<div>s.Name</div>
<% } %>