MVC 3 多表单模型传递到字典

Posted

技术标签:

【中文标题】MVC 3 多表单模型传递到字典【英文标题】:MVC 3 multiple forms model passing to dictionary 【发布时间】:2012-02-14 09:53:36 【问题描述】:

我对 MVC 3 很陌生,但我遇到了一个问题。主要布局如下:

<body>
<div id="conteiner_body">
    <div id="conteiner_main">
        <div id="container_top">
            @ html.RenderPartial("Basket"); 
            @ Html.RenderPartial("MenuTop"); 
        </div>
        <div id="left_side_border">
            <div id="left_side">
                @ Html.RenderPartial("SearchBox"); 
                @ Html.RenderAction("Index", "LeftMenu"); 
            </div>
        </div>
        <div id="content">
            @RenderBody()
        </div>
        @ Html.RenderPartial("Footer"); 
    </div>
</div>
</body>

我在页面上有 3 个表单。首先是在 MenuTop 视图中:

@model Models.LogOnModel
<div id="conteiner_menu_top">
    <div id="menu_top">
        <div id="login">
            <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
            <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

            @
                using (Html.BeginForm("LogOn", "Account"))
                
                    @Html.TextBoxFor(m => m.UserName)
                    @Html.PasswordFor(m => m.Password)
                    @Html.CheckBoxFor(m => m.RememberMe)
                    <input type="submit" value="Login" />
                    <input type="button" value="Registr" onclick="document.location.href = '/Account/Register'" />
                
            
        </div>
    </div>
</div>

第二个在SearchBox中:

@using (Html.BeginForm("Search", "SearchBox"))

<div id="search_box">
    <h2>Search</h2>
        <input name="searchWord" class="text" type="text" />
        <a href="rozsirene_vyhledavani">Advanced</a>
        <input class="submit" type="submit" value="Search" />
</div>

当然还有 RenderBody 中的表单,它会根据上下文而变化。 问题是,当我从 RenderBody() 发布一些表单时,例如。注册,我收到以下错误:

传入字典的模型项是类型 'Models.RegisterModel',但是这个字典需要一个模型项 输入“Models.LogOnModel”。

我尝试将自己的字典添加到 MenuTop 和 SearchBox:

Html.RenderPartial("MenuTop", new ViewDataDictionary(Models.LogOnModel))
Html.RenderPartial("SearchBox", new ViewDataDictionary(IEnumerable<Product>))

但在这种情况下,我收到以下错误:

CS0119:“Models.LogOnModel”是“类型”,在给定上下文中无效

有没有人知道如何解决这个问题?非常感谢。

【问题讨论】:

【参考方案1】:
@Html.RenderPartial("MenuTop", new Models.LogOnModel());
@Html.RenderPartial("SearchBox", Enumerable.Empty<Product>());

【讨论】:

以上是关于MVC 3 多表单模型传递到字典的主要内容,如果未能解决你的问题,请参考以下文章

在 MVC 中将字典数据库表映射到模型的方法

传递到字典中的模型项的类型为'System.Collections.Generic.List`1 []',但此字典需要[duplicate]类型的模型项

如何从 HTTPPOST、字典或检索表单值?

如何通过 Post 方法使用 JSON 模型将 JSON 字典作为参数传递?

字典可以在创建时传递给 django 模型吗?

将字典的键和值并行传递给函数?