gpt4 book ai didi

asp.net-mvc-3 - 我可以有使用两个模型的局部 View 吗?

转载 作者:行者123 更新时间:2023-12-03 18:34:37 24 4
gpt4 key购买 nike

我正在尝试制作一个局部 View ,其作用如下:

  • 当用户未登录时,显示注册表。
  • 当用户登录时,向我显示用户信息。

  • 我有一个局部 View ,它既可以作为注册表单,也可以作为用户信息卡;取决于用户是否登录。

    由于这个局部 View 必须在网站的任何地方都可见,我将它写在 MVC3 应用程序的 _layout 区域:
    <body>
    <div id="wrapper">

    <div id="top">
    <p id="onlinecount">7890 Personas Jugando</p>
    <p id="logoncontrol">ENTRAR | REGISTRARSE</p>
    </div>

    <div id="headercontainer">
    <img src="../../Content/Images/topheadertemp.png" />
    </div>

    <div id="middle">
    <div id="playerinformation">
    @Html.Partial("_RegisterPartial") <!-- HERE! -->
    </div>

    <div id="centerad">
    <img src="../../Content/Images/premio.png" />
    </div>

    <div id="rightad">
    <img src="../../Content/Images/ganadores.png" />
    </div>

    <div class="clear"></div>
    </div>

    <div id="bottom">@RenderBody()
    </div>

    </div>
    </body>

    基本上,如果用户未登录,我需要在该部分显示一个表单。但是,如果他登录(通过 cookie 或其他方式),我应该加载他的信息模型以显示他帐户的数据。

    这就是我被困的地方。我不知道如何为这种用法加载模型。由于这是在 _layout 中,如果我是对的,没有 Controller 对其进行操作,不是吗?

    有什么建议?

    最佳答案

    你应该看看以前的question ,这与您的相似。

    您应该在一个模型中为您的页面提供注册和用户信息。 (所以你的问题的答案是你的页面只有一个模型。但你的模型可以由其他对象组成——每个局部 View 一个。)

    因此,正如您在链接中看到的那样,用户的部分 View 仅使用与其相关的页面模型中的那些对象。

    我想这应该能帮到你。希望这可以帮助!祝你好运。

    更新 :很抱歉延迟,但这里有一个示例(大量代码)可能会有所帮助:

    型号 :
    我创建了一个抽象 View 模型,其中始终包含 reg 和用户数据。每个页面的模型都可以从这个抽象继承。

    public class Registration
    {
    public string UserName { get; set; }
    public string Password { get; set; }
    }

    public class UserData
    {
    public string DisplayName { get; set; }
    public int Age { get; set; }
    }

    public abstract class RegModelViewModelBase
    {
    public string Title { get; set; }
    public Registration RegInfo { get; set; }
    public UserData UserInfo { get; set; }
    }

    public class MainPageViewModel : RegModelViewModelBase
    {
    }

    Controller :
    在这里,我只是为这个页面/ View (MainPageViewModel)实例化了具体的 View 模型。我设置了属性(可能来自数据库等)。我将 View 模型传递给 View 。
    public class HomeController : Controller
    {
    public ActionResult Index()
    {
    MainPageViewModel hpvm = new MainPageViewModel();

    hpvm.Title = "Some Cool Page";
    hpvm.RegInfo = new Registration() { Password = "blah", UserName = "dhoerster" };
    hpvm.UserInfo = new UserData() { DisplayName = "David Hoerster", Age = 125 };

    return View(hpvm);
    }
    }

    查看 -- _Layout.cshtml:
    请注意,我模型中的第一行为我的 _layout 模板设置了模型对象。我从 Controller 获取这个 View 模型,我可以在 _layout(或其他模板)中引用它。除了获取部分 View (_RegStuff)并将我的 RegInfo 从我的模型(在 Controller 中设置)传递给它之外,我在这里没有做太多事情:
    @model MvcApplication1.Models.RegModelViewModelBase

    <!DOCTYPE html>
    <html>
    <head>
    <title>@Model.Title</title>
    </head>

    <body>
    @Html.Partial("_RegStuff", Model.RegInfo)
    @RenderBody()
    </body>
    </html>

    查看 -- _RegInfo.cshtml:
    很简单,但我再次设置了我的模型类型,该部分 View 希望传入。
    @model MvcApplication1.Models.Registration
    <div>User Name = @Model.UserName</div>

    查看 -- 索引.cshtml:
    再次设置模型并在我的索引 View 中使用它。
    @model MvcApplication1.Models.MainPageViewModel

    @{
    Layout = "~/Views/Shared/_Layout.cshtml";
    }

    <h2>@Model.Title</h2>
    <h3>Display Name = @Model.UserInfo.DisplayName</h3>

    因此,在整个过程中,我可以引用 Controller 中设置的模型。

    我希望这能解释我想要达到的目的。如果没有,我可以相应地更新它。

    谢谢!

    关于asp.net-mvc-3 - 我可以有使用两个模型的局部 View 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6988365/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com