【问题标题】:MVC partial view updated but not showing in main viewMVC 部分视图已更新,但未在主视图中显示
【发布时间】:2016-05-23 13:13:43
【问题描述】:

我正在尝试在单击 ajax 按钮后在我的主视图中更新我的部分视图。我逐步浏览部分视图,模型具有正确的值。我将值存储在 html 中,以便它们显示在主视图中。不显示新值。我想知道是否有人可以帮助我。

查看模型:

namespace myApp.ViewModels
{
    public class mrfResult
    {
        public string mrf { get; set; }
        public string round { get; set; }
        public string route { get; set; }
        public string supplier { get; set; }
        public string status { get; set; }
        public string deadline { get; set; }
    }
}

控制器:

[HttpPost]
public ActionResult RFInfo(RfInfo pRfInfo)
{
  List<mrfResult> newResult = new List<mrfResult>();
.....
mrfResult nRow = new mrfResult();
nRow.mrf = pRfRow; nRow.round = pRfInfo.round; nRow.route = routeRow.ServiceId.ToString();nRow.supplier = supRow.name; nRow.status = statName; nRow.deadline = supRow.deadline.ToString();
newResult.Add(nRow);
.....
return PartialView("~/Views/RFMaster/_Partials/_GetRFDetails.cshtml", newResult);
}

局部视图:

@model List<myApp.ViewModels.mrfResult>

    <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
    <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>

    @section scripts {
        <script src="~/Javascript/RFInfo.js"></script>
    }
    <div>
        @{            
            string routeName = "(a - b)";
            string servId = "";

            if (Model != null) {
                for (var i = 0; i < Model.Count; i++)
                {
                    servId = Model[i].supplier;
                    break;
                }                
            }
        }
        <span>@routeName</span><br />
        <span>@servId</span><br />
        <span>@routeName</span><br />
    </div>

主视图:

@model List<myApp.ViewModels.mrfResult>
    @{
        Layout = "~/Views/Shared/_Layout.cshtml";
        }

<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Scripts/multi-select/multiple-select.js"></script>
<link href="~/Scripts/multi-select/multiple-select.css" rel="stylesheet" />
<link href="~/CSS/css_RFInfo.css" rel="stylesheet" />

@section scripts {
    <script src="~/Javascript/RFInfo.js"></script>
}
@{
    int cnt = 0;
}
<body>
    <div>
        <h1>RF Information</h1>

        ............

        <div class="contRfDetails">
            @Html.Partial("~/Views/RFMaster/_Partials/_GetRFDetails.cshtml")
        </div>
    </div>
</body>

jQuery :

$(document).ready(function () { 
    $("#btnFind").click(function () {
        var getRf = $("#ddlRf").val();       
        var getRound = $("#ddlRnd").val();
        var getRoute = $("#ddlRte").multipleSelect('getSelects').toString();
        var getSupp = $("#ddlSup").multipleSelect('getSelects').toString();
        var getStat = $("#ddlStat").multipleSelect('getSelects').toString();

        var params = {
            'rf': getRf, 'route': getRoute, 'round': getRound, 'supp': getSupp, 'stat': getStat
        };
        var json = JSON.stringify(params);
        $.ajax({
            url: "../RFMaster/RFInfo",
            type: "POST",
            data: json,
            cache: false,
            async: true,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            traditional: true,
            success: function (data) {
                alert('Process Successful');
            },
            error: function () {
                alert("Error")   
            }
        });
    });
}); 

在第一次加载时在主视图中显示具有部分视图的div:

(a - b)

(a - b)

这是正确的。

按下“btnFind”按钮后,控制器 httppost 操作结果函数被触发。该模型是根据 jquery 参数填充的。然后将模型发送到局部视图。在局部视图中的模型上执行循环。检索其中一个值 (sup1) 并将其存储在变量“servId”中。然后将该变量分配在一个跨度“@servId
”中。

主视图中的 div 现在应该如下所示:

(a - b)

sup1

(a - b)

但我得到的只是视图中的原始数据。

(a - b)

(a - b)

【问题讨论】:

  • 我在任何地方都看不到将 ajax 调用结果附加到 &lt;div class="contRfDetails"&gt;&lt;/div&gt; 的代码。在ajax调用的成功部分,如果你把$('.contRfDetails').append(data);

标签: jquery ajax asp.net-mvc view


【解决方案1】:

js 应该使用来自控制器的数据更新一个 html 元素。 更新脚本的行:

*success: function (data) {
            alert('Process Successful');
        },*

success: function (data) {
           $('.contRfDetails').html(data);
        },

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    相关资源
    最近更新 更多