Asp.net mvc 4 如何将整数传递给ActionResult来呈现此局部视图
这是我的ProductAttributeValueListAll表单,在尝试添加局部视图之前,它显示良好,但出现以下错误: 传入字典的模型项的类型为“f_uAnonymousType4Asp.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
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 });}