Mr.*_*ith 1 c# asp.net-mvc views models
给定两个组件:
project.web
project.lib
project.web程序集引用了包含一些业务逻辑的project.lib.来自project.lib的一个简单类:
public class Person
{
public string Name;
}
Run Code Online (Sandbox Code Playgroud)
在project.web.Controllers中:
Using project.lib.models;
public class PersonController : Controller
{
Person person = new Person();
public ActionResult Index()
{
return View(person);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我有一些问题的部分.在很多示例项目中,我在View中看到了以下内容(在本例中为Index.aspx):
<% @Import Namespace="project.lib.models" %>
Run Code Online (Sandbox Code Playgroud)
允许您像这样使用Model对象:
<%= Model.Name %>
Run Code Online (Sandbox Code Playgroud)
我没有像工作那样工作,我必须这样做:
<%= (Model as Person).Name %>
Run Code Online (Sandbox Code Playgroud)
要么
<%
var person = (Person)Model;
Response.Write(person.Name);
%>
Run Code Online (Sandbox Code Playgroud)
这是为什么呢?这种情况的原因是什么?评论?建议?我的类定义如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace project.lib.models
{
public class Person
{
public Int64 PersonID;
public string DisplayName;
public string RealName;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以发布<%@ Page%>指令吗?它应该是这样的:
<%@ Page Language="C#"
[...]
Inherits="System.Web.Mvc.ViewPage<project.lib.models.Person>" %>
Run Code Online (Sandbox Code Playgroud)
您是否尝试为此视图创建强类型代码隐藏文件?
您需要将视图的inherits属性更新为代码隐藏文件:
<%@ Page Language="C#"
CodeBehind="Index.aspx.cs" Inherits="project.web.Views.People.Index" %>
Run Code Online (Sandbox Code Playgroud)
然后在代码隐藏中:
namespace project.web.Views.People.Index {
public partial class Index : System.Web.Mvc.ViewPage<project.lib.models.Person>
{}
}
Run Code Online (Sandbox Code Playgroud)
我不认为这是解决System.Web.Mvc.ViewPage类的问题,因为页面不会加载(你会得到一个例外,因为找不到System.Web.Mvc.ViewPage),而你甚至无法访问Model属性.
| 归档时间: |
|
| 查看次数: |
3335 次 |
| 最近记录: |