首页 > 看 7天学习mvc 时 遇到的 view传递参数 问题

看 7天学习mvc 时 遇到的 view传递参数 问题

控制器代码:
[HeaderFooterFilter]

    public ActionResult AddNew()
    {
        //CreateEmployeeViewModel employeeListViewModel = new CreateEmployeeViewModel();
        //employeeListViewModel.FooterData = new FooterViewModel();
        //employeeListViewModel.FooterData.CompanyName = "StepByStepSchools";//Can be set to dynamic value
        //employeeListViewModel.FooterData.Year = DateTime.Now.Year.ToString();
        //employeeListViewModel.UserName = User.Identity.Name; //New Line
        return View("CreateEmployee", new CreateEmployeeViewModel());
    }

视图CreateEmployee代码:
@using MVC_Sec.Models
@model Employee
[HeaderFooterFilter] 过滤器(里面的bvm(BaseViewModel )需要被传送到CreateEmployee里面的layout中用来初始化CreateEmployeeViewModel的对象,所以view的参数是CreateEmployeeViewModel) 代码:
public class HeaderFooterFilter : ActionFilterAttribute

{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        ViewResult v = filterContext.Result as ViewResult;
        if (v != null) // v will null when v is not a ViewResult
        {
            BaseViewModel bvm = v.Model as BaseViewModel;
            if (bvm != null)//bvm will be null when we want a view without Header and footer
            {
                bvm.UserName = HttpContext.Current.User.Identity.Name;
                bvm.FooterData = new FooterViewModel();
                bvm.FooterData.CompanyName = "StepByStepSchools";//Can be set to dynamic value
                bvm.FooterData.Year = DateTime.Now.Year.ToString();
            }
        }
    }
}

然后因为视图CreateEmployee代码:
@using MVC_Sec.Models
@model Employee
所以会报如下错误:
传入字典的模型项的类型为“MVC_Sec.Models.CreateEmployeeViewModel”,但此字典需要类型“MVC_Sec.Models.Employee”的模型项。

如果把CreateEmployee里面的@using MVC_Sec.Models@model Employee改为CreateEmployeeViewModel需要的 @using MVC_Sec.ViewModels
@model EmployeeViewModel 则传值到 CreateEmployee视图不会错。
但是这样一来CreateEmployee视图里面需要用到的@using MVC_Sec.Models@model Employee
就没有了 导致,Employee数据不能赋值传递。
求大神帮忙

【热门文章】
【热门文章】