Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 带有部分视图的引导模式弹出窗口适用于一个对象,但由于ajax GET请求,另一个对象会收到块_Jquery_Asp.net Mvc_Twitter Bootstrap_Razor_Bootstrap Modal - Fatal编程技术网

Jquery 带有部分视图的引导模式弹出窗口适用于一个对象,但由于ajax GET请求,另一个对象会收到块

Jquery 带有部分视图的引导模式弹出窗口适用于一个对象,但由于ajax GET请求,另一个对象会收到块,jquery,asp.net-mvc,twitter-bootstrap,razor,bootstrap-modal,Jquery,Asp.net Mvc,Twitter Bootstrap,Razor,Bootstrap Modal,我有两个链接“详细信息”和“历史”,每个链接打开一个模式弹出窗口,从服务器获取html(部分视图),并显示为模式弹出窗口的内容。这适用于细节,但不适用于历史。他们都有相同的逻辑 这是详细信息链接 <a class="modal-pop-up-action-link" title="Details" href="/MyController/Detail/10004" data-modal-url="/MyController/Detail/10004?partial=True" data-m

我有两个链接“详细信息”和“历史”,每个链接打开一个模式弹出窗口,从服务器获取html(部分视图),并显示为模式弹出窗口的内容。这适用于细节,但不适用于历史。他们都有相同的逻辑

这是详细信息链接

<a class="modal-pop-up-action-link" title="Details" href="/MyController/Detail/10004" data-modal-url="/MyController/Detail/10004?partial=True" data-modal-title="Details">
<i class="fa fa-file-text-o"></i>
</a> 

这是历史链接

<a class="modal-pop-up-action-link" title="History" href="/MyController/History/10004" data-modal-url="/MyController/History/10004?partial=True" data-modal-title="Audit Histories">
<i class="fa fa-list-ol"></i>
</a>

MyController操作的一部分

public async Task<ActionResult> History(int id, bool partial = false)
{

    // Logic to get the model    
    if (partial)
        return PartialView("_HistoryGridPartial", model);
    else 
        return View(model);
}

public async Task<ActionResult> Detail(int id, bool partial = false)
{

    // Logic to get the model    
    if (partial)
        return PartialView("_DetailGridPartial", model);
    else 
        return View(model);
}
公共异步任务历史记录(int-id,bool-partial=false)
{
//获取模型的逻辑
如果(部分)
返回PartialView(“历史网格部分”,模型);
其他的
返回视图(模型);
}
公共异步任务详细信息(int-id,bool-partial=false)
{
//获取模型的逻辑
如果(部分)
返回PartialView(“\u DetailGridPartial”,model);
其他的
返回视图(模型);
}
这是历史的局部观点

@model IEnumerable<MyModel>
@{
    ViewBag.Title = "Histories";
}

<table class="table datatable table-hover table-striped">
    <thead>
        <tr>
             <th>Field 1 Title</th>
             <th>Field 2 Title</th>
        </tr>
    </thead>
    <tbody>
        @foreach (MyModel rd in Model)
        {
            <tr> 
             <td>@rd.Field1</td>
             <td>@rd.Field2</td>
            </tr>
        }
    </tbody>
</table>
@model MyDetail
@{
    ViewBag.Title = "Details";
}

<div class="panel panel-default">
    <div class="panel-heading">
        <span class="glyphicon glyphicon-list-alt">&nbsp;</span>
        <label>Details</label>
    </div>
    <div class="panel-body">
        @Html.LabelFor(a => a.Field1):&nbsp;@Model.Field1
        ...
    </div>
</div>  
@model IEnumerable
@{
ViewBag.Title=“历史”;
}
字段1标题
字段2标题
@foreach(模型中的MyModel rd)
{
@第1区
@第二区
}
细节部分视图

@model IEnumerable<MyModel>
@{
    ViewBag.Title = "Histories";
}

<table class="table datatable table-hover table-striped">
    <thead>
        <tr>
             <th>Field 1 Title</th>
             <th>Field 2 Title</th>
        </tr>
    </thead>
    <tbody>
        @foreach (MyModel rd in Model)
        {
            <tr> 
             <td>@rd.Field1</td>
             <td>@rd.Field2</td>
            </tr>
        }
    </tbody>
</table>
@model MyDetail
@{
    ViewBag.Title = "Details";
}

<div class="panel panel-default">
    <div class="panel-heading">
        <span class="glyphicon glyphicon-list-alt">&nbsp;</span>
        <label>Details</label>
    </div>
    <div class="panel-body">
        @Html.LabelFor(a => a.Field1):&nbsp;@Model.Field1
        ...
    </div>
</div>  
@model MyDetail
@{
ViewBag.Title=“详细信息”;
}
细节
@LabelFor(a=>a.Field1):@Model.Field1
...
最后是javascript调用

$('.modal-pop-up-action-link').click(function (e) {
    e.preventDefault();
    BootstrapDialog.show({
        size: BootstrapDialog.SIZE_WIDE,
        cssClass: 'bootstrap-dialog-model-pop-up',  
        title: '<h4>' + $(this).data("modal-title") + '</h4>',
        message: $('<div></div>').load($(this).data("modal-url")),
        buttons: [
            {
                label: 'Close',
                action: function(dialogItself) {
                    dialogItself.close();
                }
            }
        ]
    });
});
$('.modal弹出操作链接')。单击(函数(e){
e、 预防默认值();
BootstrapDialog.show({
大小:BootstrapDialog.size\u宽,
cssClass:“引导对话框模型弹出窗口”,
标题:'+$(此).data(“模式标题”)+'',
消息:$('').load($(此).data(“模式url”),
按钮:[
{
标签:“关闭”,
操作:函数(对话框本身){
dialogself.close();
}
}
]
});
});
我理解在Ajax请求中不允许使用GET方法来防止Json劫持。但是,我的问题是,为什么它在一种情况下有效,而在另一种情况下无效,你知道吗

谢谢,

我找到了问题

使用Ajax GET请求局部视图是完全有效的。发生的是返回结果有错误,部分视图需要IEnumerable,但我传递了MyViewModel,它包含IEnumerable。现在,将控制器更改为返回IEnumerable而不是MyViewModel成功了

关于GET响应被阻止,因为请求中有一个错误,服务器返回了一个json对象(这是我们设置的一个全局错误处理),它被阻止是因为出于安全目的,我们不允许GET中的json响应

public async Task<ActionResult> History(int id, bool partial = false)
{

    // Logic to get the model    
    if (partial)
        return PartialView("_HistoryGridPartial", model.MyEnumerableList);
    else 
        return View(model);
}
公共异步任务历史记录(int-id,bool-partial=false)
{
//获取模型的逻辑
如果(部分)
返回PartialView(“\u HistoryGridPartial”,model.MyEnumerableList);
其他的
返回视图(模型);
}