join دو جدول با استفاده از viewmodel و نمایش داخل یک لیست
سلام
من برای join دو جدول به این ترتیب عمل کردم.
ViewModel
public class AddProfileViewModel
{
public IEnumerable<MyTest.Models.DomainModels.User> Users { get; set; }
public IEnumerable<MyTest.Models.DomainModels.File> Files { get; set; }
}
Controller
public ActionResult ShowProp()
{
var db = new TestDBEntities2();
var model = from p in db.Users
join pi in db.Files on p.Username equals pi.Username
select new
{
p.Name,
p.Mobile,
pi.Images
};
return View(model);
}
حالا برای ویو وقتی میحوام جدولی حاصل از join هر دو تشکیل بدم باید دچار مشکل شدم. چون در model باید حتما مشخص کنم که دقیقا قبلدهای کدوم جدول رو نشون اما من میخوام یک جدول جدید حاصل از کوئری join بسازم.
@model MyTest.ViewModels.Admin.AddProfileViewModel
@foreach (var item in Model.Users)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Mobile)
</td>
</tr>
}
همونطور که در قسمت foreach میبینید نوشتمModel.Users اما باید یه جوری Model خالی بنویسم تا هر کدوم از فیلدها و جداولش رو در داخل foreach بهش بدم.
یعنی داخل foreach بتونم بگم:
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.User.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.User.Mobile)
</td>
<td>
@Html.DisplayFor(modelItem => item.File.Image)
</td>
</tr>
}
میشه کمکم کنید. خیلی مهمه.
ممنون
نقل قول: join دو جدول با استفاده از viewmodel و نمایش داخل یک لیست
نقل قول: join دو جدول با استفاده از viewmodel و نمایش داخل یک لیست
خب من مشکلم حل شد. اینجا میذارم تا اگر کسی لازم داشت استفاده کنه. بنظرم کاربرد خوبی داره.
ViewModel
public class AddProfileViewModel
{
public User Users { get; set; }
public File Files { get; set; }
}
Controller
[HttpGet]
public ActionResult ShowProp()
{
var db = new TestDBEntities2();
AddProfileViewModel VM = new AddProfileViewModel();
var ViewModel = from p in db.Users
join pd in db.Files on p.Username equals pd.Username
where pd.Username == p.Username
orderby p.Name
select new AddProfileViewModel { Users=p, Files=pd };
return View(ViewModel);
}
View
@model IEnumerable<MyTest.ViewModels.Admin.AddProfileView Model>
<table class="table">
<tr>
<th>
نام
</th>
<th>
موبایل
</th>
<th>
عکس
</th>
<th></th>
</tr>
@foreach (var item in @Model)
{
<tr>
<td>@item.Users.Name</td>
<td>@item.Users.Mobile</td>
<td> @Html.ImageFor(modelitem => item.Files.Images, new { width = "80" }, "20170222_182113.jpg", "files", "uploadimages")</td>
</tr>
}}}
</table>
نتیجه join چند جدول از دیتابیس در یک جدول در view هست.