我有以下控制器方法来获取作为IEnumerable<samplemodel> model
[HttpGet]
public ActionResult Create_Template(IEnumerable<ProductsPropertiesVM> model)
{
return View(...);
}
这是ProductsPropertiesVM
模型类
public class ProductsPropertiesVM
{
public int Property_ID { get; set; }
public string Property_Title { get; set; }
public string Property_Value { get; set; }
public bool IsChecked { get; set; }
public string Product_Name { get; set; }
public string Product_Description { get; set; }
public string Prodcut_Features { get; set; }
public string Unique_Selling_Propositions { get; set; }
public string Business_Case_Feasibity_Study { get; set; }
public string Sharia_Resolution_and_Requirement_for_Product { get; set; }
public string Approved_Accounting_Entries { get; set; }
public string Listing_of_Risk_Related_Procedures { get; set; }
public string Legal_Requirement { get; set; }
public string Listing_of_Internal_Procedures_for_Review { get; set; }
public string Product_Statistics_Targeted_Segment { get; set; }
public string Product_Statistics_Sales_Volume { get; set; }
public string Product_Statistics_Profitability { get; set; }
public string Product_Statistics_Annual_Growth_Rate { get; set; }
public string Relevent_Case_Studies { get; set; }
}
到这个控制器,数据传递如下图像
图片一:10个元素[0-9个索引]
图像二:第0个索引元素的属性
我想选择这个0-9索引元素的IsChecked
属性True
的有限元素属性,并将其返回
分配有限元素的属性我创建了另一个模型类,如下面的
public class TemplateProperties
{
public int Property_ID { get; set; }
public string Property_Title { get; set; }
public string Property_Value { get; set; }
public bool IsChecked { get; set; }
}
然后我尝试做下面的事情
方法1:
[HttpGet]
public ActionResult Create_Template(IEnumerable<ProductsPropertiesVM> model)
{
IEnumerable<BrochureTemplateProperties> sample = model.Where(y => y.IsChecked).Select(y => new
{
sample.IsChecked = y.IsChecked,
sample.Name = y.Property_Title,
sample.PropertyValue = y.Property_Value
});
return View(sample);
};
但这会导致编译错误
方法2:
[HttpGet]
public ActionResult Create_Template(IEnumerable<ProductsPropertiesVM> model)
{
var sample = model.Where(y => y.IsChecked).Select(y => new
{
IsChecked = y.IsChecked,
Name = y.Property_Title,
PropertyValue = y.Property_Value
});
return View(sample);
};
但是这种方法一旦我转到视图模型值没有绑定到TemplateProperties模型,
我该怎么做才能纠正这个
修改
一旦我使用@Rahuls解决方案,几乎所有的编译错误消失了,然后我创建了详细信息视图,但是一旦我运行它就会得到一个像这样的错误页面
答案 0 :(得分:4)
您的方法1是正确的,因为您正在预测anonymous
类型并将其存储在IEnumerable<BrochureTemplateProperties>
中,因此您收到错误。只需像这样预测BrochureTemplateProperties
类型: -
IEnumerable<BrochureTemplateProperties> sample = model.Where(y => y.IsChecked)
.Select(y => new BrochureTemplateProperties
{
IsChecked = y.IsChecked,
Name = y.Property_Title,
PropertyValue = y.Property_Value
});
<强>更新强>
好的,所以你的View期待Models.BrochureTemplateProperties
,但是你正在传递IEnumerable<BrochureTemplateProperties>
,所以你需要获取第一个匹配的对象。只需在结尾添加FirstOrDefault
: -
.Select(y => new BrochureTemplateProperties
{
IsChecked = y.IsChecked,
Name = y.Property_Title,
PropertyValue = y.Property_Value
}).FirstOrDefault(); //here
答案 1 :(得分:0)
试试这个 -
var sample = model.Where(y => y.IsChecked).Select(y => new
{
IsChecked = y.IsChecked,
Name = y.Property_Title,
PropertyValue = y.Property_Value
}).ToList<BrochureTemplateProperties>();