首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC - Html.RenderPartial问题

ASP.NET MVC - Html.RenderPartial问题
EN

Stack Overflow用户
提问于 2012-03-08 11:22:33
回答 3查看 1.3K关注 0票数 2

我有一个名为"LoginUserControl.ascx“的用户控件,放在母版页中。"LoginUserControl.ascx“的标题

代码语言:javascript
复制
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MultiTechnologyWeb.Models.loginmodel>" %>

然后,我使用下面的代码在主页中显示用户控件。

代码语言:javascript
复制
<% Html.RenderPartial("LoginUserControl"); %>

在第一次运行时,将加载页面"index“。请注意“索引”页面的标题,没有指定任何模型。这样页面加载就成功了。

代码语言:javascript
复制
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/MT.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

现在我点击这个链接来打开register.aspx。我得到了以下错误

传递到字典中的模型项的类型是“MultiTechnologyWeb.Models.Regiermodel”,但是该字典需要一个类型为“MultiTechnologyWeb.Models.loginmodel”的模型项。

"register.aspx“页面的标题

代码语言:javascript
复制
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/MT.Master" Inherits="System.Web.Mvc.ViewPage<MultiTechnologyWeb.Models.registermodel>" %>

因此,对于我的理解,模型是互换的,所以任何人都可以帮助我如何解决这个问题。

Explanation.............LATEST

我已经调试过了,我知道在完成了对寄存器的操作结果之后,就会发生崩溃。下面的代码是操作结果“寄存器”的代码。

代码语言:javascript
复制
   public ActionResult register()
    {
        registermodel model;
        //some code here
    return View("register",model);
    }

因此,我只是返回一种类型的模型,即“寄存器模型”,是否可以通过使用一个列表或数组在同一个视图中返回多个模型来返回另一个模型,例如"loginmodel“。

EN

回答 3

Stack Overflow用户

发布于 2012-03-08 11:53:03

您应该在您的<% Html.RenderAction("Logon","Account"); %>中使用MasterPage,而不是使用RenderPartial,在此操作中,您只需返回要在标头中使用的登录部分。

代码语言:javascript
复制
public ActionResult Logon(){
// do your stuff
return PartialView("LoginUserControl");
}

通过这种方式,您可以将loginmodel传递给LogInPartial,并将registermodel传递到注册页。

票数 0
EN

Stack Overflow用户

发布于 2012-03-08 14:19:55

请不要说RenderAction和RenderPartial不一样。

RenderPartial只呈现视图。而RenderAction将进行新的MVC往返,方法是创建控制器等的新实例并返回结果。

为了解决您的问题,您可以在调用MultiTechnologyWeb.Models.loginmodel<% Html.RenderPartial("LoginUserControl"); %>中传递。看起来是这样的:

代码语言:javascript
复制
<% Html.RenderPartial("LoginUserControl", new MultiTechnologyWeb.Models.loginmodel()); %>

或者:

代码语言:javascript
复制
<% Html.RenderPartial("LoginUserControl", Model.LoginModel); %>
票数 0
EN

Stack Overflow用户

发布于 2012-03-08 18:41:15

如果您不想将模型发送到您的部分视图,这是我过去想要做的,那么您至少必须将一些东西传递给RenderPartial方法。

这是我唯一能找到的方法,让我现在必须通过一个模型。我试着传递null,它继续传递父模型

代码语言:javascript
复制
<% Html.RenderPartial("LoginUserControl", new ViewDataDictionary()); %>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9616876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档