繁体   English   中英

使用多个局部视图

[英]Working with multiple partial views

美好的一天

我正在索引页面上使用7个局部视图。

Index.cshtml (在其自己的标签中创建部分视图的代码部分)

@model project1.Models.MasterModel
<div class="tab-content col-lg-9 col-md-9 col-sm-9 col-xs-9" style="margin-bottom:110px;">
<div id="partial1" class="tab-pane fade in active">
    @Html.Partial("partial1", Model)
</div>
<div id="partial2" class="tab-pane fade in">
    @Html.Partial("partial2", Model)
</div>
<div id="partial3" class="tab-pane fade in">
    @Html.Partial("partial3", Model)
</div>
<div id="partial4" class="tab-pane fade in">
    @Html.Partial("partial4", Model.Owners)
</div>
<div id="partial5" class="tab-pane fade in">
    @Html.Partial("partial5", Model)
</div>
<div id="partial6" class="tab-pane fade in">
    @Html.Partial("partial6", Model)
</div>
<div id="partial7" class="tab-pane fade in">
    @Html.Partial("partial7", Model)
</div>

partial1我有一个partial1按钮,该按钮应使用在第一个局部视图上提交的信息填充其他局部视图。

我的Model包含7个模型(每个局部视图一个)

MasterModel.cs

public class MasterModel
{
    public DisplayPartial1 view1 {get;set;}

    public DisplayPartial2 view2 {get;set;}

    public DisplayPartial3 view3 {get;set;}

    public DisplayPartial4 view4 {get;set;}

    public DisplayPartial5 view5 {get;set;}

    public DisplayPartial6 view6 {get;set;}

    public DisplayPartial7 view7 {get;set;}
}

在控制器的Index Action结果中,我创建了MasterModel的新实例,然后为所有子模型创建了新实例,并返回到Index视图。

MainController.cs

// Global variable used and returned by all partial views
MasterModel main = new MasterModel();

public ActionResult Index()
{
    MasterModel master = new MasterModel();
    master.view1 = new DisplayPartial1 ();
    master.view2 = new DisplayPartial2 ();
    master.view3 = new DisplayPartial3 ();
    master.view4 = new DisplayPartial4 ();
    master.view5 = new DisplayPartial5 ();
    master.view6 = new DisplayPartial6 ();
    master.view7 = new DisplayPartial7 ();
    return View(master);
}

public ActionResult MyPartial1()
{
    return PartialView("MyPartial1", master);
}

[HttpPost]
public ActionResult MyPartial1(MasterModel model, string submitButton)
{
    if(submitButton == "GetInfo")
    {
        /*Process input values*/
        //wcf service return data
        main.view1.id = serviceObject.Id;
        ...
        main.view4.name = serviceObject.Name;
        ...
    }
    return PartialView("MyPartial1", master);
}

当返回MyPartial1 ,其他6个局部视图将不使用分配的信息进行更新,直到我使用如下所示的Java脚本执行MyPartial1调用:

<script type="text/javascript">
    $(document).ready(function () {
        $('#input1').change(function () {
            $('form').submit();
        });
        $('#input2').change(function () {
            $('form').submit();
        });
    });
</script>

局部视图示例 (所有局部视图都在相同的主体上工作)

@model OperatorLicense.Models.MasterModel
@using (Ajax.BeginForm("MyPartial1", "Operator", null, new AjaxOptions
{
    UpdateTargetId = "MyPartial1",
    InsertionMode = InsertionMode.Replace,
    HttpMethod = "Post"
}, new { id = "MyPartial1" }))
{
    @Html.TextBoxFor(model => model.view1.SerialNumber, new { id="SerialNumber", @class = "form-control", placeholder = Html.DisplayNameFor(n => n.view1.SerialNumber) })
    ...
}

返回MyPartial1局部视图后,是否可以刷新其他局部视图,以便可以在所需的局部视图上显示确定的值?

您可以使用AjaxOptions类的OnSuccessOnComplete属性。

@using (Ajax.BeginForm("MyPartial1", "Operator", null, new AjaxOptions
{
    UpdateTargetId = "MyPartial1",
    InsertionMode = InsertionMode.Replace,
    HttpMethod = "Post",
    OnSuccess="partial1Success"
}, new { id = "MyPartial1" }))
{
    @Html.TextBoxFor(model => model.view1.SerialNumber, new { id="SerialNumber", @class = "form-control", placeholder = Html.DisplayNameFor(n => n.view1.SerialNumber) })
    ...
}

在javascript中定义partial1Success方法

<script type="text/javascript">
    function partial1Success(){
       // write your other partial view refresh logic here
    }
</script>

成功提交后调用的partial1Success方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM