我有一个名为"LoginUserControl.ascx“的用户控件,放在母版页中。"LoginUserControl.ascx“的标题
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MultiTechnologyWeb.Models.loginmodel>" %>然后,我使用下面的代码在主页中显示用户控件。
<% Html.RenderPartial("LoginUserControl"); %>在第一次运行时,将加载页面"index“。请注意“索引”页面的标题,没有指定任何模型。这样页面加载就成功了。
<%@ 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“页面的标题
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/MT.Master" Inherits="System.Web.Mvc.ViewPage<MultiTechnologyWeb.Models.registermodel>" %>因此,对于我的理解,模型是互换的,所以任何人都可以帮助我如何解决这个问题。
Explanation.............LATEST多
我已经调试过了,我知道在完成了对寄存器的操作结果之后,就会发生崩溃。下面的代码是操作结果“寄存器”的代码。
public ActionResult register()
{
registermodel model;
//some code here
return View("register",model);
}因此,我只是返回一种类型的模型,即“寄存器模型”,是否可以通过使用一个列表或数组在同一个视图中返回多个模型来返回另一个模型,例如"loginmodel“。
发布于 2012-03-08 11:53:03
您应该在您的<% Html.RenderAction("Logon","Account"); %>中使用MasterPage,而不是使用RenderPartial,在此操作中,您只需返回要在标头中使用的登录部分。
public ActionResult Logon(){
// do your stuff
return PartialView("LoginUserControl");
}通过这种方式,您可以将loginmodel传递给LogInPartial,并将registermodel传递到注册页。
发布于 2012-03-08 14:19:55
请不要说RenderAction和RenderPartial不一样。
RenderPartial只呈现视图。而RenderAction将进行新的MVC往返,方法是创建控制器等的新实例并返回结果。
为了解决您的问题,您可以在调用MultiTechnologyWeb.Models.loginmodel的<% Html.RenderPartial("LoginUserControl"); %>中传递。看起来是这样的:
<% Html.RenderPartial("LoginUserControl", new MultiTechnologyWeb.Models.loginmodel()); %>或者:
<% Html.RenderPartial("LoginUserControl", Model.LoginModel); %>发布于 2012-03-08 18:41:15
如果您不想将模型发送到您的部分视图,这是我过去想要做的,那么您至少必须将一些东西传递给RenderPartial方法。
这是我唯一能找到的方法,让我现在必须通过一个模型。我试着传递null,它继续传递父模型
<% Html.RenderPartial("LoginUserControl", new ViewDataDictionary()); %>https://stackoverflow.com/questions/9616876
复制相似问题