首页 > 解决方案 > PartialView 未在 Asp.net MVC 中显示?

问题描述

我有一个数组,它作为数字(一些标签的 ID),当这个数组传递给控制器​​操作方法(RawTagCreation)时,我使用 ajax 调用将此数组传递给操作方法,然后这个数组中的数字用于获取来自数据库的数据,然后传递给另一个 ViewModel 对象 ( rawTagVMs),然后我返回带有这个 ViewModel 对象的部分视图。问题是部分视图没有显示?基本上ajax调用的成功事件也不会被触发。

function selectedValues() {
            var datas = [];
            $('#search_to option').each(function () {
                datas.push($(this).attr('value'));
            });
            console.log(datas);
            if (datas.length > 0) {
                $.ajax({
                    url: "@Url.Action("RawTagCreation", "SourceTagMapping")",
                    type: 'POST',
                    contentType: 'application/json',
                    dataType: 'json',
                    data: JSON.stringify({ 'selectedTags': datas }),
                    success: function (data) {
                        debugger;
                        $('#myModalContent').html(data);
                        $('#myModal').modal('show');
                    }
                });
            }
            else {
                alert('Please Select One or More Raw Tags')
            }
        }

动作方法在这里给出

 public ActionResult RawTagCreation(int[] selectedTags)
        {
            List<RawTagVM> rawTagVMs = new List<RawTagVM>();
            if (ModelState.IsValid)
            {
                foreach (var item in selectedTags)
                {

                    var OldSourecTag = db.Real_Raw_Points.Where(x => x.Source_Tag_Id_Fk == item).FirstOrDefault();
                    var OPCTag = db.OPC_SourceTags.Where(x => x.Source_Tag_Id == item).FirstOrDefault();
                    if (OldSourecTag == null)
                    {
                        RawTagVM objToInsertRawTags = new RawTagVM();
                        objToInsertRawTags.Source_Tag_Id_Fk = item;
                        objToInsertRawTags.R_Tag_Name = "Provide Tag Name";
                        rawTagVMs.Add(objToInsertRawTags);

                    }
                }
                return PartialView("_Update_TagNames", rawTagVMs);
            }
            return View();
        }

部分视图在这里

@model List<OmniConnect.ViewModel.RawTagViews.RawTagVM>
<div class="modal-header">
    <h3 class="modal-title" id="exampleModalLabel">Update The Raw Tag Names</h3>
    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
        <span aria-hidden="true">&times;</span>
    </button>
</div>


<div class="modal-footer">
    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
    <button type="button" class="btn btn-primary" onclick="Confirm()">Confirm Update</button>
</div>

标签: c#jqueryajaxasp.net-mvc

解决方案


当您尝试 ajax 调用时,您无法返回部分视图

如果要返回视图,则必须使用 Html.Beginform 之类的表单并提交

如果要返回成功方法,则必须返回一个值,可以是字符串并将其附加到标签

 public ActionResult RawTagCreation(int[] selectedTags)
    {
        List<RawTagVM> rawTagVMs = new List<RawTagVM>();
        if (ModelState.IsValid)
        {

            return Json("<div>any view</div");
        }
        return json("");
    }

然后你可以像这样使用:

 $.ajax({
                url: "@Url.Action("RawTagCreation", "SourceTagMapping")",
                type: 'POST',
                contentType: 'application/json',
                dataType: 'json',
                data: JSON.stringify({ 'selectedTags': datas }),
                success: function (data) {
                    debugger;
                    $('#myModalContent').html(data);
                    $('#myModal').modal('show');
                }
            });

推荐阅读