不方便渲染部分视图 MVC 3



我有一个视图模型的部分视图,但是在主视图中渲染部分视图时遇到不便

我收到以下消息:

传递到字典中的模型项类型为"RolMVC3.Models.USER",但此字典需要类型为"RolMVC3.Areas"的模型项。分销商.型号. 位置视图模型 '

视图模型(LocationViewModel),视图模型在一个区域内

namespace RolMVC3.Areas.Distributor.Models
{
    public class LocationViewModel
        {  
            [Required]
            public decimal IdDepartment { get; set; }
            [Required]
            public string NameCity { get; set; }
            [Required]
            public string NameNeighborhood { get; set; }
        }
    }
}

部分视图(_LocationEdit):

 @model RolMVC3.Areas.Distributor.Models.LocationViewModel 
                   .....
                   .....
        <div class="editor-label">
            @Html.LabelFor(model => model.IdDepartment)
        </div>
        <div class="editor-field">
            @Html.DropDownListFor(model => model.IdDepartment, new SelectList(ViewBag.Department as System.Collections.IEnumerable, "IdDepartment", "NameDepartment", ViewBag.selectedDepartment), "--- Select ---", new { id = "Department"})
            @Html.ValidationMessageFor(model => model.Idepartment)
        </div>
                 .....
                 ..... 

主视图(编辑):

@model RolMVC3.Models.USER
@{
    ViewBag.Title = "Edit User";
}
        ....
        ....
@{Html.RenderPartial("_LocationEdit");}
        ....
        ....

我该如何解决这个问题?

祝福

在主视图中(编辑)传递位置视图模型,因为部分视图需要此模型,并且您不会传递它@Html.RenderPartial

@model RolMVC3.Models.USER
@{
    ViewBag.Title = "Edit User";
}
        ....
        ....
@{Html.RenderPartial("_LocationEdit",YourLocationViewMODEL);}
        ....
        ....

当你调用你的RenderPartial时,你需要传入一个模型类型的位置视图模型。现在看起来您的编辑视图中没有这个,所以你需要 a) 从控制器将其添加到 viewbag 中并通过 RenderPartial 调用传递它,或者 b) 更改编辑视图中的模型类型(您可能需要一个同时保存用户和位置视图模型信息的包装器)

[编辑]源代码如下所示:

// ViewModel
namespace RolMVC3.Areas.Distributor.Models
    {
        public class EditPageViewModel
        {  
            public LocationViewModel LocationViewModel {get;set;]
            public USER User { get; set; }
        }
    }

// Edit View
    @model RolMVC3.Areas.Distributor.Models.EditPageViewModel
    @{
        ViewBag.Title = "Edit User";
    }
            ....
            ....
    @Html.RenderPartial("_LocationEdit",Model.LocationViewModel);
            ....
            ....

相关内容

  • 没有找到相关文章

最新更新