如何从具有Ienumerable的主视图调用部分视图 [英] How to call a partial View from main View which is having Ienumerable
问题描述
在我的应用程序中,我有一个下拉列表选择当下拉值更改时,我在基于部分视图的网格中绑定记录dropdownselection值。现在我想在加载主视图页面时显示部分视图页面,所以我使用了Html.Action(PartialViewName),它的工作正常。在主页面中,我有编辑按钮来编辑网格中的值当我单击编辑按钮时,下拉列表中的值更改为默认值为选择,最后选择的值将丢失。如何解决这个问题我的代码中有任何错误。
MainView.cshtml
@ model DM_Tool_MVC_Site.ViewModels.GroupHeadViewModels
@ {
ViewBag.Title =Group Heads;
}
< script type =text / javascript>
$(document).ready(function(){
// $('#GroupList')。hide();
$('#SelectedDivision')。change(function() {
var DivId = $('#SelectedDivision option:selected')。val();
$ .get('@ Url.Action(GroupHeadIndexPartial)',
{DivisionID: DivId},function(data){
// $('#GroupList')。show();
$(#GroupList)。html(data);
});
});
});
< / script>
< h2>用户管理< / h2>
@using(Html.BeginForm(Index,GroupHead,FormMethod.Post,new {@class =form-horizontal,role =form}))
{
@ Html.AntiForgeryToken()
< h4> @ ViewBag.Title< / h4>
< hr />
< div class =form-group>
@ Html.LabelFor(m => m.SelectedDivision,new {@class =col-md-2 control-label})
< div class =col-md-10 >
@ Html.DropDownListFor(m => m.SelectedDivision,Model.GetDivision(),--Choose Division--,new {@class =form-control})
< / DIV>
< / div>
< div class =form-group>
< input type =submitname =Editvalue =Editclass =btn btn-default/>
< / div>
< div class =form-groupid =GroupList>
@ Html.Action(GroupHeadIndexPartial)
< / div>
< div class =form-group>
< div class =col-md-offset-2 col-md-10>
< input type =submitclass =btn btn-defaultvalue =Update/>
< / div>
< / div>
}
@section脚本{
@ Scripts.Render(〜/ bundles / jqueryval)
}
GroupIndexPartial.cshtml
@ model IEnumerable< DM_Tool_MVC_Site .ViewModels.GroupHeadList>
< table class =table table-striped>
< tr>
< th>
Group
< / th>
< th>
Group Head
< / th>
< / tr>
@foreach(模型中的var项目)
{
< tr>
< td>
@ Html.DisplayFor(modelItem => item.GroupName)
< / td>
< td>
@ Html.HiddenFor(modelItem => item.DivID)
@ Html.HiddenFor(modelItem => item.GroupId)
@ Html.DropDownListFor(modelItem => item.GroupHeadUserName ,item.UsersSelectList(item.DivID,item.GroupId).Select(u => new SelectListItem
{
Text = u.Text,
Value = u.Value,
Selected = u.Text == item.GroupHeadUserName
}), - 选择组头 - ,item.EditMode?(对象)new {@class =form-control}:new {@ readonly =readonly,@ class =form-control})
@ * @ Html.DisplayFor(modelItem => item.GroupHeadUserName)* @
< / td>
< / tr>
}
< / table>
GroupHeadController
public class GroupHeadController:Controller
{
private DMContext db = new DMContext();
// GET:/ GroupHead /
public ActionResult Index()
{
var model = new GroupHeadViewModels();
return View(model);
}
//获取:/ GroupHeadPartial页面填充
public PartialViewResult GroupHeadIndexPartial(string DivisionID)
{
int Div = 0;
if(DivisionID!= string.Empty)
{
Div = Convert.ToInt32(DivisionID);
}
var GroupHeads =(来自db.Groups中的gr
在新的{DivisionId = Div,GroupId = gr.ID}中的db.GroupHeads中加入gh等于new {DivisionId = gh.DivisionID ,GroupId = gh.GroupID} x1中的x1
x1.DefaultIfEmpty()
加入db.Users中的用户新{DivisionId = x.DivisionID,UserId = x.UserID}等于new {DivisionId = user.DivisionID,UserId = user.Id}从y1中的y到y1
.DefaultIfEmpty()
其中gr.IsActive == true
选择新的GroupHeadList
{
GroupName = gr.Value,
GroupHeadUserName = y.EmployeeName,
DivID = Div,
GroupId = gr.ID,
UserId = y.Id
});
返回PartialView(GroupHeads);
}
(document).ready(function(){
//
('#GroupList')。hide();
('#SelectedDivision')。change(function(){
var DivId =
Hi,
In my application I am having a dropdown selection When the dropdown values is changed I am binding the records in the Grid in a partial view based on the dropdownselection value. Now I want to show the Partial view page when the main view page is loaded so I used Html.Action("PartialViewName"), its working fine. In the main page I am having the Edit button to Edit the values in a grid when I click the Edit button the values in the dropdown changed to default value as "select", the last selected value is lost. How to solve this issue is there any mistake I have did in my code.
MainView.cshtml
@model DM_Tool_MVC_Site.ViewModels.GroupHeadViewModels
@{
ViewBag.Title = "Group Heads";
}
<script type="text/javascript">
$(document).ready(function () {
//$('#GroupList').hide();
$('#SelectedDivision').change(function () {
var DivId = $('#SelectedDivision option:selected').val();
$.get('@Url.Action("GroupHeadIndexPartial")',
{ DivisionID: DivId }, function (data) {
//$('#GroupList').show();
$("#GroupList").html(data);
});
});
});
</script>
<h2>User Management</h2>
@using (Html.BeginForm("Index", "GroupHead", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
<h4>@ViewBag.Title</h4>
<hr />
<div class="form-group">
@Html.LabelFor(m => m.SelectedDivision, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.SelectedDivision, Model.GetDivision(), "--Choose Division--", new { @class = "form-control" })
</div>
</div>
<div class="form-group">
<input type="submit" name="Edit" value="Edit" class="btn btn-default" />
</div>
<div class="form-group" id="GroupList">
@Html.Action("GroupHeadIndexPartial")
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="Update" />
</div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
GroupIndexPartial.cshtml
@model IEnumerable<DM_Tool_MVC_Site.ViewModels.GroupHeadList>
<table class="table table-striped">
<tr>
<th>
Group
</th>
<th>
Group Head
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.GroupName)
</td>
<td>
@Html.HiddenFor(modelItem => item.DivID)
@Html.HiddenFor(modelItem => item.GroupId)
@Html.DropDownListFor(modelItem => item.GroupHeadUserName, item.UsersSelectList(item.DivID,item.GroupId).Select(u => new SelectListItem
{
Text = u.Text,
Value = u.Value,
Selected = u.Text == item.GroupHeadUserName
}), "--Select Group Head--", item.EditMode ? (object)new { @class = "form-control" } : new { @readonly = "readonly", @class = "form-control" })
@*@Html.DisplayFor(modelItem => item.GroupHeadUserName)*@
</td>
</tr>
}
</table>
GroupHeadController
public class GroupHeadController : Controller
{
private DMContext db = new DMContext();
// GET: /GroupHead/
public ActionResult Index()
{
var model = new GroupHeadViewModels();
return View(model);
}
//Get: /GroupHeadPartial Page Filling
public PartialViewResult GroupHeadIndexPartial(string DivisionID)
{
int Div=0;
if (DivisionID != string.Empty)
{
Div = Convert.ToInt32(DivisionID);
}
var GroupHeads = (from gr in db.Groups
join gh in db.GroupHeads on new { DivisionId = Div, GroupId = gr.ID } equals new { DivisionId = gh.DivisionID, GroupId = gh.GroupID } into x1
from x in x1.DefaultIfEmpty()
join user in db.Users on new { DivisionId = x.DivisionID, UserId = x.UserID } equals new { DivisionId = user.DivisionID, UserId = user.Id } into y1
from y in y1.DefaultIfEmpty()
where gr.IsActive == true
select new GroupHeadList
{
GroupName = gr.Value,
GroupHeadUserName = y.EmployeeName,
DivID=Div,
GroupId=gr.ID,
UserId=y.Id
});
return PartialView(GroupHeads);
}
(document).ready(function () { //
('#GroupList').hide();
('#SelectedDivision').change(function () { var DivId =
这篇关于如何从具有Ienumerable的主视图调用部分视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!