我尝试根据此控制器操作创建产品详细信息(住宿详细信息)视图:
public ActionResult Detail(int id)
{
var detail = from cities in _db.Cities
join properties in _db.Properties on cities.CityId equals properties.CityId
join proplocations in _db.PropLocations on properties.LocationId equals proplocations.LocationId
join proptypes in _db.PropTypes on properties.TypeId equals proptypes.TypeId
where properties.PropId == id
select new
{
cities.CityName,
proptypes.PropType1,
proplocations.Location,
properties.PropName,
properties.PropOwner,
properties.PropStars,
properties.PropAddress,
properties.PropDescription,
properties.MaxGuests,
properties.PropConditions,
properties.PropId
};
return View(detail.FirstOrDefault());
}
因为这是我第一次尝试创建这个我不知道如何解决脚手架模板模型.. 我得到
Server Error in '/' Application.
The model item passed into the dictionary is of type '<>f__AnonymousType5`11[System.String,System.String,System.String,System.String,System.String,System.Int32,System.String,System.String,System.Int32,System.String,System.Int32]', but this dictionary requires a model item of type 'accomm2.Models.Property'.
我的模特:
我的自我观点:
@model accomm2.Models.Property
@ { ViewBag.Title =“细节”; }
详细
属性<div class="display-label">CityId</div> <div class="display-field">@Model.CityId</div> <div class="display-label">TypeId</div> <div class="display-field">@Model.TypeId</div> <div class="display-label">LocationId</div> <div class="display-field">@Model.LocationId</div> <div class="display-label">PropName</div> <div class="display-field">@Model.PropName</div> <div class="display-label">PropOwner</div> <div class="display-field">@Model.PropOwner</div> <div class="display-label">PropStars</div> <div class="display-field">@Model.PropStars</div> <div class="display-label">PropAddress</div> <div class="display-field">@Model.PropAddress</div> <div class="display-label">PropPhone</div> <div class="display-field">@Model.PropPhone</div> <div class="display-label">PropEmail</div> <div class="display-field">@Model.PropEmail</div> <div class="display-label">PropWebsite</div> <div class="display-field">@Model.PropWebsite</div> <div class="display-label">PropDescription</div> <div class="display-field">@Model.PropDescription</div> <div class="display-label">MaxGuests</div> <div class="display-field">@Model.MaxGuests</div> <div class="display-label">PropConditions</div> <div class="display-field">@Model.PropConditions</div>
答案 0 :(得分:0)
看起来你正在尝试使用LINQ投影来创建一个新类型,而不是提供它所期望的类型 - 这是一个“Property”对象。
创建一个ViewModel并重新生成页面以将其用作强类型,或将您的投影更改为
选择新的Model.Property(){ //分配变量 }
这就是我的猜测
答案 1 :(得分:0)
您的视图定义为将Property
作为模型。
您尝试将其传递给匿名类型,而不是Property
。
您需要选择Property
个实例或删除@model
声明,以使视图采用动态模型。
答案 2 :(得分:0)
视图强烈绑定到“accomm2.Models.Property”,而您的“detail”对象是一个匿名对象,这就是您收到此消息的原因。
要快速测试,您可以尝试
var prop = new Property {
// Your fields goes here
}
返回视图(道具);
这只是一个快速存根代码,但理想情况下,此转换应该在单独的层中进行。