尝试将模型传递给部分模型,我该怎么做?

发布于 2024-08-14 09:09:37 字数 817 浏览 5 评论 0原文

我的操作创建了一个强类型的视图数据,它被传递到我的视图。

在视图中,我将模型传递给渲染部分方法。

public ActionResult Index()
{
            ViewDataForIndex vd = new ViewDataForIndex();

            vd.Users = Users.GetAll();

            return View(vd);
}


public class ViewDataForIndex: ViewData
    {
          public IList<User> Users {get;set;}

    }

现在在视图中:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ViewDataForIndex>" %>

<% Html.RenderPartial("~/controls/blah.ascx", ViewData.Model); %>

和 blah.ascx 中:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
  1. 我现在如何访问我的模型?
  2. 如果我想为 ViewUserControl 创建一个强类型类,我该怎么做?继承自?

My action creates a strongly typed viewdata, which is passed to my view.

In the view, I pass the Model to the render partial method.

public ActionResult Index()
{
            ViewDataForIndex vd = new ViewDataForIndex();

            vd.Users = Users.GetAll();

            return View(vd);
}


public class ViewDataForIndex: ViewData
    {
          public IList<User> Users {get;set;}

    }

now in the view:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ViewDataForIndex>" %>

<% Html.RenderPartial("~/controls/blah.ascx", ViewData.Model); %>

and in blah.ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
  1. how do I access my model now?
  2. if I wanted to create a strongly typed class for my ViewUserControl, how would I do that? inherit from?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱要勇敢去追 2024-08-21 09:09:37

一:在 ascx 内部:

   <%= Model.YourProperty %>

二:向 ViewUserControl 提供类型参数:

   <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %>

One: Inside the ascx:

   <%= Model.YourProperty %>

Two: Provide a type Argument to ViewUserControl:

   <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %>
撞了怀 2024-08-21 09:09:37

我更喜欢 @jfar 的第二种方法,因为如果您决定将更复杂的模型传递给视图,它可以更轻松地进行修改。

因此,您可以传递一个具有多个属性和/或更多子对象的类。

如果您现在从该对象继承,那么您所需要做的就是从复杂对象继承并更改一段代码,以及添加新属性,然后就完成了。

I like @jfar's second approach better as it allows for easier modification if you ever decide to pass a more complex model to the view.

So you may pass a class that has multiple properties and/or more child objects.

If you inherit from the object now, then all you need to do is to inherit from your complex object and change one piece of code, as well as add the new properties, and your done.

心在旅行 2024-08-21 09:09:37

更具体地说,jfar 的答案:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ViewDataForIndex>" %>

如果您的父页面具有 ViewDataForIndex 类型的模型,则使用相同的 ViewData.Model 调用子页面也将传递 类型的对象ViewDataForIndex

More specifically to jfar's answer:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ViewDataForIndex>" %>

If your parent page has a model of type ViewDataForIndex, calling the child with the same ViewData.Model will also pass an object of type ViewDataForIndex.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文