c# - ASP.NET MVC - 使用 C# 将引用不同程序集的模型从 Controller 传递到 View

标签 c# asp.net-mvc view models

给定两个程序集:

project.web
project.lib

project.web 程序集引用了包含一些业务逻辑的 project.lib。来自 project.lib 的一个简单类:

public class Person
{
    public string Name;
}

在 project.web.Controllers 中:

Using project.lib.models;

public class PersonController : Controller
{
    Person person = new Person();

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

这是我有一些问题的部分。在许多示例项目中,我在 View 中看到了以下内容(在本例中为 Index.aspx):

<% @Import Namespace="project.lib.models" %>

允许您像这样使用模型对象:

<%= Model.Name %>

我还没有像示例那样工作,我不得不这样做:

<%= (Model as Person).Name %>

<%
    var person = (Person)Model;
    Response.Write(person.Name);
%>

为什么会这样?这种情况的原因是什么?评论?建议?我的类定义如下所示:

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;
    }
}

最佳答案

您可以发布您的 <%@ Page %> 指令吗?它应该是这样的:

<%@ Page Language="C#"
         [...]
         Inherits="System.Web.Mvc.ViewPage<project.lib.models.Person>" %>

您是否尝试过为此 View 创建强类型代码隐藏文件?

您需要将 View 的继承属性更新为代码隐藏文件:

<%@ Page Language="C#" 
    CodeBehind="Index.aspx.cs" Inherits="project.web.Views.People.Index" %>

然后在代码隐藏中:

namespace project.web.Views.People.Index {
  public partial class Index : System.Web.Mvc.ViewPage<project.lib.models.Person>
  {}
}

我认为解析 System.Web.Mvc.ViewPage 类不是问题,因为这样页面就不会加载(你会得到一个 System.Web.Mvc.ViewPage 不能加载的异常找到),您甚至无法访问 Model 属性。

关于c# - ASP.NET MVC - 使用 C# 将引用不同程序集的模型从 Controller 传递到 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1415931/

相关文章:

android - 如何使多个 View 具有相同的宽度?

Java 安卓工作室 : change an attribute of a View inside its own listener

android - 空对象引用上的 void android.view.View.dispatchWindowVisibilityChanged(int)'

c# - 禁止对 List<T> 公开添加和删除

c# - ResouceManager 有时会错误地加载 ASP.Net MVC 资源文件

ASP.NET MVC - Ajaxified RenderAction

asp.net-mvc - "Login failed for user ' <用户> '."在 SQL Azure 上的 MVC 5 中使用 DefaultConnection 时

c# - 为什么这个按钮的 OnClick 事件只工作一次?

c# - 两个列表之间的 "Left XOR"LINQ

javascript - 如何使用 ASP.NET MVC 通过 Ajax 将选中的行发送到服务器?