how to parameter pass html.partial with tuple<list model, model>

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.
11 年 前
I am beginner MVC razor.
I want to know how can I use model attribute and model list in one view
In ~\Views\Catalog\_ProductAttributes.cshtml view,
I declare model as
@model Tuple<IList<ProductDetailsModel.ProductVariantModel.ProductVariantAttributeModel>, ProductDetailsModel.ProductVariantModel.ProductVariantAttributeModel> 


and I want to call that view with partial from ~\Views\Catalog\_ProductVariantLine.cshtml as follow but it has error
  @Html.Partial("_ProductAttributes",Tuple.Create<IList<ProductDetailsModel.ProductVariantModel.ProductVariantAttributeModel>, ProductDetailsModel.ProductVariantModel.ProductVariantAttributeModel>(dataDictAttributes, Model.ProductVariantAttributes),dataDictAttributes); 


Anyone help me! how to fix that.
11 年 前
obviously dataDictAttributes is not assignable to IList< ... > it should be something like

Tuple.Create< IList< ProductDetailsModel.ProductVariantModel.ProductVariantAttributeModel > ,
ProductDetailsModel.ProductVariantModel.ProductVariantAttributeModel >( new List< ProductDetailsModel.ProductVariantModel.ProductVariantAttributeModel >( @Model.ProductVariantAttributes ) , **WHAT DO YOU WANT HERE?** ) ;

However there is no single ProductVariantAttributeModel only a list, so you could take the first one?

Tuple.Create< IList< ProductDetailsModel.ProductVariantModel.ProductVariantAttributeModel > , ProductDetailsModel.ProductVariantModel.ProductVariantAttributeModel >( new List< ProductDetailsModel.ProductVariantModel.ProductVariantAttributeModel >( @Model.ProductVariantAttributes ) , @Model.ProductVariantAttributes[0] ) ;

But really what's the point of passing a list of ProductVariantAttributeModels and a single ProductVariantAttributeModel?
(which one do you need??).  Alternativly you could create a new viewmodel

public class ProductVariantAttributeViewModel()
{
public IList<ProductDetailsModel.ProductVariantModel.ProductVariantAttributeModel> AttributeModels { get; set; }
public ProductDetailsModel.ProductVariantModel.ProductVariantAttributeModel  AttributeModel { get ; set; }
}

And set the properties to the correct values in the controller. Then you can do @Model.AttributeModels for the list and @Model.AttributeModel for the single attribute model.
11 年 前
Thanks, it work.
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.