Asp.net mvc 4 如何将整数传递给ActionResult来呈现此局部视图

Asp.net mvc 4 如何将整数传递给ActionResult来呈现此局部视图,asp.net-mvc-4,Asp.net Mvc 4,这是我的ProductAttributeValueListAll表单,在尝试添加局部视图之前,它显示良好,但出现以下错误: 传入字典的模型项的类型为“f_uAnonymousType41[System.Int32]”,但此字典需要类型为“System.Collections.Generic.IEnumerable1[Nop.Admin.Models.Catalog.ProductModel+ProductVariantAttributeValueModel]”的模型项 @model IEnum

这是我的ProductAttributeValueListAll表单,在尝试添加局部视图之前,它显示良好,但出现以下错误:

传入字典的模型项的类型为“f_uAnonymousType4
1[System.Int32]”,但此字典需要类型为“System.Collections.Generic.IEnumerable
1[Nop.Admin.Models.Catalog.ProductModel+ProductVariantAttributeValueModel]”的模型项

 @model IEnumerable<Nop.Admin.Models.Catalog.ProductModel.ProductVariantAttributeModel>

@{
    ViewBag.Title = "ProductAttributeValueListAll";
}

<h2>ProductAttributeValueListAll</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.ProductAttributeId)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.ProductAttribute)
        </th>


    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.ProductAttributeId)
        </td>

        <td>
            @Html.DisplayFor(modelItem => item.ProductAttribute)
            <br />

          @Html.Partial("ProductAssociatedList", new { productVariantAttributeId = item.ProductAttributeId });

        </td>


    </tr>
}
@model IEnumerable
@{
ViewBag.Title=“ProductAttributeValueListAll”;
}
ProductAttributeValueListAll

@ActionLink(“新建”、“创建”)

@DisplayNameFor(model=>model.ProductAttributeId) @Html.DisplayNameFor(model=>model.ProductAttribute) @foreach(模型中的var项目){ @DisplayFor(modelItem=>item.ProductAttributeId) @DisplayFor(modelItem=>item.ProductAttribute)
@Html.Partial(“ProductAssociatedList”,新的{productVariantAttributeId=item.ProductAttributeId}); }
这是我试图调用的部分视图的控制器中的操作代码

    [ChildActionOnly]
public ActionResult ProductAssociatedList(int productVariantAttributeId)
{
    var values = _productAttributeService.GetProductVariantAttributeValues(productVariantAttributeId);

    var ProductVariantAttributeValue = values

        .Select(x =>
        {
             var associatedProduct = _productService.GetProductById(x.AssociatedProductId);
            //var pictureThumbnailUrl = _pictureService.GetPictureUrl(x.PictureId, 75, false);
            ////little hack here. Grid is rendered wrong way with <inmg> without "src" attribute
            //if (String.IsNullOrEmpty(pictureThumbnailUrl))
            //    pictureThumbnailUrl = _pictureService.GetPictureUrl(null, 1, true);
             var pvaModel = new ProductModel.ProductVariantAttributeValueModel()
             {
                 Id = x.Id,
                 ProductVariantAttributeId = x.ProductVariantAttributeId,
                 AttributeValueTypeId = x.AttributeValueTypeId,
                 AttributeValueTypeName = x.AttributeValueType.GetLocalizedEnum(_localizationService, _workContext),
                 AssociatedProductId = x.AssociatedProductId,
                 AssociatedProductName = associatedProduct != null ? associatedProduct.Name : "",
                 Name = x.ProductVariantAttribute.AttributeControlType != AttributeControlType.ColorSquares ? x.Name : string.Format("{0} - {1}", x.Name, x.ColorSquaresRgb),
                 IsPreSelected = x.IsPreSelected,
                     DisplayOrder = x.DisplayOrder

             };
                   // pvaModel.ViewEditUrl = Url.Action("ProductAssociatedList", "Product", new { productVariantAttributeId = x.Id });
                // pvaModel.ViewEditText = string.Format(_localizationService.GetResource("Admin.Catalog.Products.ProductVariantAttributes.Attributes.Values.ViewLink"), x.ProductVariantAttribute.ProductVariantAttributeValues != null ? x.ProductVariantAttribute.ProductVariantAttributeValues.Count : 0);
             return pvaModel;

        })
        .ToList();
    //var model =  ProductVariantAttributeValue.ToList();

    return View(ProductVariantAttributeValue);
}
[ChildActionOnly]
公共操作结果ProductAssociatedList(int productVariantAttributeId)
{
var values=\u productAttributeService.GetProductVariantTributeValues(ProductVariantTributeId);
var PRODUCTVARIANATTRIBUTEVALUE=值
.选择(x=>
{
var associatedProduct=\u productService.GetProductById(x.AssociatedProductId);
//var pictureThumbnailUrl=\u pictureseservice.GetPictureUrl(x.PictureId,75,false);
////这里有点小技巧。网格在没有“src”属性的情况下呈现错误
//if(String.IsNullOrEmpty(pictureThumbnailUrl))
//pictureThumbnailUrl=\u pictureService.GetPictureUrl(null,1,true);
var pvaModel=new ProductModel.productVariantTributeValueModel()
{
Id=x.Id,
ProductVariantTributeId=x.ProductVariantTributeId,
AttributeValueTypeId=x.AttributeValueTypeId,
AttributeValueTypeName=x.AttributeValueType.GetLocalizedEnum(_localizationService,_workContext),
AssociatedProductId=x.AssociatedProductId,
AssociatedProductName=associatedProduct!=null?associatedProduct。名称:“”,
Name=x.ProductVariantAttribute.AttributeControlType!=AttributeControlType.ColorSquares?x.Name:string.Format(“{0}-{1}”,x.Name,x.ColorSquaresRgb),
IsPreSelected=x。IsPreSelected,
DisplayOrder=x.DisplayOrder
};
//pvaModel.ViewEditUrl=Url.Action(“ProductAssociatedList”、“Product”,新的{ProductVariataTributeId=x.Id});
//pvaModel.ViewEditText=string.Format(\u localizationService.GetResource(“Admin.Catalog.Products.ProductVarianStatAttribute.Attributes.Values.ViewLink”)、x.ProductVarianStatAttribute.ProductVarianStatAttribute.ProductVarianStatTributeValues!=null?x.ProductVarianStatAttribute.ProductVarianAttribute.Count:0);
返回pvaModel;
})
.ToList();
//var模型=ProductVariantAttributeValue.ToList();
返回视图(ProductVariantAttributeValue);
}
这是我尝试插入的cshtml部分视图:

    @model IEnumerable<ProductModel.ProductVariantAttributeValueModel>

<p>

</p>
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.AssociatedProductId)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.AssociatedProductName)
        </th>
        <th>

        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.AssociatedProductId)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.AssociatedProductName)
        </td>
        <td>

        </td>
        <td>

        </td>
    </tr>
}

</table>
@model IEnumerable

@DisplayNameFor(model=>model.AssociatedProductId) @DisplayNameFor(model=>model.Name) @Html.DisplayNameFor(model=>model.AssociatedProductName) @foreach(模型中的var项目){ @DisplayFor(modelItem=>item.AssociatedProductId) @DisplayFor(modelItem=>item.Name) @Html.DisplayFor(modelItem=>item.AssociatedProductName) }

不确定我做错了什么,任何人都得到了答案

你应该直接调用action方法,而不是partial view。调用
Html.Partial
的方法是将
Int
作为
视图的模型传递,而不是调用action方法,因此:

@Html.Action("ProductAssociatedList", new { productVariantAttributeId = item.ProductAttributeId })

参考:

@{Html.RenderAction("ProductAssociatedList", new { productVariantAttributeId = item.ProductAttributeId });}