如何从具有Ienumerable的主视图调用部分视图 [英] How to call a partial View from main View which is having Ienumerable

查看:106
本文介绍了如何从具有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-horizo​​ntal,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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆