Asp.net mvc 如何使用ViewBag MVC在视图中绑定Linq多个模型数据?
我正在使用Asp.net mvc 如何使用ViewBag MVC在视图中绑定Linq多个模型数据?,asp.net-mvc,linq,asp.net-mvc-4,viewbag,Asp.net Mvc,Linq,Asp.net Mvc 4,Viewbag,我正在使用LINQ连接多个模型类,并使用ViewBag将LINQ对象传递到View 我在重复数据或绑定数据时遇到问题 模型属性: public class SalesModel { public string CustomerName { get; set; } public int SSN { get; set; } public int LicenseId { get; set; } public int Age { get; set; } publi
LINQ
连接多个模型类,并使用ViewBag
将LINQ
对象传递到View
我在重复数据或绑定数据时遇到问题
模型属性:
public class SalesModel
{
public string CustomerName { get; set; }
public int SSN { get; set; }
public int LicenseId { get; set; }
public int Age { get; set; }
public string City { get; set; }
//Vehicle Sales
public DateTime? SaleDate { get; set; }
public int CustomerId { get; set; }
public int SelecteModle { get; set; }
}
public ActionResult CreateVehicleSalesView()
{
var make = objVehicleContext.VehicleMakes;
SalesModel objSalesModle = new SalesModel()
{
MakesList = new SelectList(make, "MakeId", "Make")
};
VehicleDataContext objDataContext = new VehicleDataContext();
var vehcileSalesDetails = from VS in objDataContext.Vehiclesales
join VModel in objDataContext.VehicleModels on VS.ModelId equals VModel.ModelId
join Cus in objDataContext.Customers on VS.customerId equals Cus.customerId
join VMake in objDataContext.VehicleMakes on VModel.MakeId equals VMake.MakeId
select new
{
Name = Cus.customerName,
age = Cus.Age,
city = Cus.City,
licenseId = Cus.LicesnseId,
make = VMake.Make,
model = VModel.Model,
year = VModel.Year,
saleDate = VS.SaleDate
};
ViewBag.vehicleSalesDetails = vehcileSalesDetails;
return View(objSalesModle);
}
视图:
绑定数据时遇到问题,如何在视图中调用Linq列名
<table>
<tr>
<td>Name</td>
<td>Age</td>
<td>City</td>
<td>Make</td>
<td>Model</td>
<td>Year</td>
<td>Sale Date</td>
</tr>
@foreach (var v in ()ViewBag.vehicleSalesDetails)
{
<tr>@v.Name</tr>
<tr>@v.Age</tr>
<tr>@v.City</tr>
<tr>@v.Model</tr>
<tr>@v.Year</tr>
<tr>@v.SaleDate</tr>
}
</table>
名称
年龄
城市
制作
模型
年
销售日期
@foreach(变量v在()ViewBag.vehicleSalesDetails中)
{
@v、 名字
@v、 年龄
@v、 城市
@v、 模型
@v、 年
@v、 销售日期
}
Viewbag具有动态结构,我不建议在Viewbag中返回对象。维护与动力是不同的
您可以向SalesModel
添加其他属性,也可以创建新的模型以返回视图,如VehicleSalesDetailModel
。我建议创建一个新模型,如:
public class SalesModel
{
public string Name { get; set; }
//Change XXX with Make's type
public XXX Make {get;set;}
public int LicenseId { get; set; }
public int Age { get; set; }
public string City { get; set; }
//Vehicle Sales
public DateTime? SaleDate { get; set; }
public int Year{ get; set; }
}
在你的行动中:
public ActionResult CreateVehicleSalesView()
{
var make = objVehicleContext.VehicleMakes;
SalesModel objSalesModle = new SalesModel()
{
MakesList = new SelectList(make, "MakeId", "Make")
};
VehicleDataContext objDataContext = new VehicleDataContext();
VehicleSalesDetailModel vehcileSalesDetails = from VS in objDataContext.Vehiclesales
join VModel in objDataContext.VehicleModels on VS.ModelId equals VModel.ModelId
join Cus in objDataContext.Customers on VS.customerId equals Cus.customerId
join VMake in objDataContext.VehicleMakes on VModel.MakeId equals VMake.MakeId
select new VehicleSalesDetailModel
{
Name = Cus.customerName,
Age = Cus.Age,
City = Cus.City,
LicenseId = Cus.LicesnseId,
Make = VMake.Make,
Model = VModel.Model,
Year = VModel.Year,
SaleDate = VS.SaleDate
};
return View(vehcileSalesDetails);
}
我解决了我的问题
public class VehiclesSaveAndDetails
{
public SalesModel _salesModle { get; set; }
public IEnumerable< SalesDetailsTable> _SalesDetailsTable { get; set; }
}
public ActionResult VehicleSaveAndDetails()
{
var make = objVehicleContext.VehicleMakes;
SalesModel objSalesModle = new SalesModel()
{
MakesList = new SelectList(make, "MakeId", "Make")
};
VehicleDataContext objDataContext = new VehicleDataContext();
IEnumerable<SalesDetailsTable> vehcileSalesDetails = from VS in objDataContext.Vehiclesales
join VModel in objDataContext.VehicleModels on VS.ModelId equals VModel.ModelId
join Cus in objDataContext.Customers on VS.customerId equals Cus.customerId
join VMake in objDataContext.VehicleMakes on VModel.MakeId equals VMake.MakeId
select new SalesDetailsTable
{
CustomerName = Cus.customerName,
Age = Cus.Age,
City = Cus.City,
LicenseId = Cus.LicesnseId,
MakeName = VMake.Make,
ModelName = VModel.Model,
// = VModel.Year,
SaleDate = VS.SaleDate
};
VehiclesSaveAndDetails obj = new VehiclesSaveAndDetails();
obj._salesModle = objSalesModle;
obj._SalesDetailsTable = vehcileSalesDetails;
return View(obj);
}
公共类车辆保存和详细信息
{
公共销售模型_salesmodele{get;set;}
public IEnumerable\u SalesDetailsTable{get;set;}
}
公共行动结果车辆保存和详细信息()
{
var make=objVehicleContext.VehicleMakes;
SalesModel objSalesModle=新SalesModel()
{
MakesList=新的选择列表(make,“MakeId”,“make”)
};
VehicleDataContext objDataContext=新VehicleDataContext();
IEnumerable vehcileSalesDetails=来自objDataContext.Vehiclesales中的VS
在VS.ModelId等于VModel.ModelId的objDataContext.VehicleModels中加入VModel
在objDataContext中加入Cus。VS.customerId上的客户等于Cus.customerId
在VModel.MakeId等于VMake.MakeId的情况下,在objDataContext.VehicleMakes中加入VMake
选择新的SalesDetailsTable
{
CustomerName=Cus.CustomerName,
年龄=核心年龄,
城市,
LicenseId=Cus.licensseId,
MakeName=VMake.Make,
ModelName=VModel.Model,
//=V型号年份,
SaleDate=VS.SaleDate
};
VehiclesSaveAndDetails obj=新车辆SaveandDetails();
obj._salesModle=objsalemodle;
obj._SalesDetailsTable=vehcileSalesDetails;
返回视图(obj);
}
我的观点
@model MvcApplication1.Models.VehiclesSaveAndDetails
@{
ViewBag.Title = "VehicleSaveAndDeatils";
}
<h2>VehicleSaveAndDeatils</h2>
<script src="@Url.Content("~/Scripts/jquery-1.12.4.js")" type="text/javascript"></script>
<script src="~/Scripts/jquery-1.12.4.js"></script>
<script type="text/javascript"
src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
//Dropdownlist Selectedchange event
$('#ddlMake').change(function () {
// $("#ddlModel").empty();
$.ajax({
type: "POST",
url: "/iRateBook/FillModel",
dataType: "json",
traditional: true,
data: { makeId: $(this).val() },
success: function (data) {
//alert("hello"+data.Model[0]);
$("#ddlModel").empty();
$.each(data, function (i, data) { // bind the dropdown list using json result
$('<option>',
{
value: data.ModelId,
text: data.Model
}).html(data.CityName).appendTo("#ddlModel");
});
},
error: function (ex) {
alert('Failed to retrieve states.' + ex);
}
});
return false;
})
});
</script>
@{
ViewBag.Title = "CreateVehicleSalesView";
}
<h2>CreateVehicleSalesView</h2>
@using (Html.BeginForm("SaveVehcileSales", "iRateBook"))
{
<table>
<tr>
<td>Customer Name: </td>
<td>@Html.TextBoxFor(m => m._salesModle.CustomerName) </td>
</tr>
<tr>
<td>SSN</td>
<td>@Html.TextBoxFor(m => m._salesModle.SSN)</td>
</tr>
<tr>
<td>License Number</td>
<td>@Html.TextBoxFor(m => m._salesModle.LicenseId)</td>
</tr>
<tr>
<td>Age:</td>
<td>@Html.TextBoxFor(m => m._salesModle.Age)</td>
</tr>
<tr>
<td>City :</td>
<td>@Html.TextBoxFor(m => m._salesModle.City)</td>
</tr>
<tr>
<td>Select Make:</td>
<td>
@Html.DropDownListFor(m => m._salesModle.SelectedMake, Model._salesModle.MakesList, new
{
@id = "ddlMake"
})
</td>
</tr>
<tr>
<td>Select Model</td>
<td>@Html.DropDownListFor(m => m._salesModle.SelecteModle, new List<SelectListItem>(), new { @id = "ddlModel" })</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Save" /> </td>
</tr>
</table>
<br />
<br />
<table>
<tr>
<td>Name</td>
<td>Age</td>
<td>City</td>
<td>Make</td>
<td>Model</td>
<td>Sale Date</td>
</tr>
@foreach (var v in Model._SalesDetailsTable)
{
<tr>
<td>@v.CustomerName</td>
<td>@v.Age</td>
<td>@v.City</td>
<td>@v.MakeName</td>
<td>@v.ModelName</td>
<td>@v.SaleDate</td>
</tr>
}
</table>
}
@model mvcapapplication1.Models.vehicles保存和详细信息
@{
ViewBag.Title=“车辆保存和死亡”;
}
车辆行驶和死亡
$(文档).ready(函数(){
//下拉列表Selectedchange事件
$('#ddlMake')。更改(函数(){
//$(“#ddlModel”).empty();
$.ajax({
类型:“POST”,
url:“/iRateBook/FillModel”,
数据类型:“json”,
传统的:是的,
数据:{makeId:$(this.val()},
成功:功能(数据){
//警报(“hello”+data.Model[0]);
$(“#ddlModel”).empty();
$.each(数据,函数(i,数据){//使用json结果绑定下拉列表
$('',
{
值:data.ModelId,
文本:data.Model
}).html(data.CityName).appendTo(“#ddlModel”);
});
},
错误:函数(ex){
警报(“检索状态失败”。+ex);
}
});
返回false;
})
});
@{
ViewBag.Title=“CreateVehicleSalesView”;
}
CreateVehicleSalesView
@使用(Html.BeginForm(“SaveVehcileSales”、“iRateBook”))
{
客户名称:
@Html.TextBoxFor(m=>m.u salesmodel.CustomerName)
SSN
@TextBoxFor(m=>m.\u salesmodel.SSN)
许可证号码
@Html.TextBoxFor(m=>m.\u salesmodel.LicenseId)
年龄:
@TextBoxFor(m=>m.u salesmodel.Age)
城市:
@Html.TextBoxFor(m=>m.\u salesmodel.City)
选择制作:
@Html.DropDownListFor(m=>m.\u salesModle.SelectedMake,Model.\u salesModle.MakesList,new
{
@id=“ddlMake”
})
选择模型
@DropDownListFor(m=>m._salesModle.SelecteModle,new List(),new{@id=“ddlModel”})
名称
年龄
城市
制作
模型
销售日期
@foreach(模型中的var v.\u SalesDetailsTable)
{
@v、 客户名称
@v、 年龄
@v、 城市
@v、 化名
@v、 型号名称
@v、 销售日期
}
}
使用这8个属性创建视图模型,然后使用选择新的MyViewModel{