在nopcommerce 4.2中,传递给ViewDataDictionary的模型项的类型为'Castle.Proxies.Model'

时间:2019-06-12 17:55:13

标签: c# asp.net-mvc nopcommerce

当我将数据传递给模型并调用视图时,此错误引发我。

这是完整的错误显示,

在处理请求时发生未处理的异常。 InvalidOperationException:传递到ViewDataDictionary的模型项的类型为'Castle.Proxies.VendorProxy',但是此ViewDataDictionary实例需要模型类型为'System.Collections.Generic.IList`1 [Nop.Web.Models.Common.VendorDetailModel ]”。

现在,我在nopcommerce 4.2中创建一个模型,一个视图和控制器。

这是我的模特儿地点,

Nop.Web =>模型=>通用=> VendorDetailModel

这是模式代码

public VendorDetailModel()
{
    Address = new List<AddressModel>();
}
public string Name { get; set; }       

public IList<AddressModel> Address { get; set; }

这里是放置控制器的地方

Nop.Web =>控制器=> CommonController => Vendordetail(方法)

这是控制器代码

public virtual IActionResult Vendordetail(int vendorId)
{
    var model = _vendorService.GetVendorById(vendorId);
    return View("Vendordetail",model);
}

这里是放置的视图,

Nop.Web =>视图=>通用=> Vendordetail.cshtml

这是查看代码

@model VendorDetailModel
content.......

因此,当我在视图文件中放置 @model VendorDetailModel 时显示此错误,而如果我删除此行,则不会显示错误。但是我删除了这一行,那么在没有模型的情况下如何获取值。

1 个答案:

答案 0 :(得分:-1)

我找到了解决方法。

问题是我没有给模型赋值,只是将存储数据变量从控制器传递给视图。

这是我的解决方案代码。

var model = new VendorDetailModel();
var vendor = _vendorService.GetVendorById(vendorId);
model.Name = vendor.Name;
return View(model);

,并且查看页面与以前的页面相同