Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
C# 临时数据删除数据_C#_Asp.net Core - Fatal编程技术网

C# 临时数据删除数据

C# 临时数据删除数据,c#,asp.net-core,C#,Asp.net Core,我试图在返回的PartialView()上持久化TempData值。它在一个帖子中正常工作,但在另一个帖子中却无法正常工作,我很为难 在以下操作中,它正常工作,并通过javascript重定向到使用该值的操作来传递该值: [ValidateAntiForgeryToken] [HttpPost] public ActionResult DeletetheFile(int attachmentid, string issueId) { string response

我试图在返回的PartialView()上持久化TempData值。它在一个帖子中正常工作,但在另一个帖子中却无法正常工作,我很为难

在以下操作中,它正常工作,并通过javascript重定向到使用该值的操作来传递该值:

[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult DeletetheFile(int attachmentid, string issueId)
{          

    string response = _adoSqlService.DeleteAttachment(attachmentid);
    TempData["ID"]= issueId;
    TempData.Keep();
     return PartialView("_DeleteFile");

}
在下面的动作中,它得到了正确的设置(见第一张图),但当它达到与我显示的第一张动作相同的动作时,它已经改变了(见第二张图)

当它到达我需要的位置时,它现在返回[string],而不是20-003

上述两个操作都针对模式弹出窗口中的局部视图运行。以下javascript捕获模式操作并将结果重定向到问题/编辑控制器/操作

$('body').on('click', '.relative', function (e) {
        e.preventDefault();
        var form = $(this).parents('.modal').find('form');
        var actionUrl = form.attr('action');
        var dataToSend = form.serialize();
        $.post(actionUrl, dataToSend).done(function (data) {
            $('body').find('.modal-content').html(data);
            var isValid = $('body').find('[name="IsValid"]').val() == 'True';
            if (isValid) {
                $('body').find('#modal-container').modal('hide');
                window.location.href = "/Issue/Edit";
            }

        });
    })
重定向似乎发生了,因为在这两种情况下都调用了编辑操作。只是在第二种情况下,它没有得到TempData值的正确值。以下是编辑操作的开始,该操作位于与上述两个操作不同的控制器中:

public ActionResult Edit(string id)
{
    if (id == null)
    {
        id = TempData["ID"].ToString();                
    }
----------更多评论 所以在过去4个小时的工作之后,我想出了一个解决办法。我不确定这是不是正确的技术。我最后做的是在部分视图上添加一个隐藏的输入字段,然后解析ajax响应以获取该值

var issueid = $(response).find('[name="issueidSaved"]').val();
window.location.href = "/Issue/Edit/?id=" + issueid
我现在关心的是issueid现在包含在查询字符串中,并且在URL中可见

这是正确的方法吗?还是我应该继续使用TempData并尝试让它发挥作用

更新 希望我能更好地解释这一点。目标是在与我的编辑页面(问题/编辑)关联的my Issues Controller中的以下操作中获取TempData值:

我的编辑页面上有一个模式,根据填充内容的不同,该模式填充了不同的局部视图。局部视图使用附件控制器,而编辑视图使用问题控制器。我使用Javascript/ajax从部分视图捕获submit,以关闭模式并重定向到Edit视图,从而在Edit视图上反映受部分视图影响的数据的刷新。当我提交_DeleteFile时,TempData值工作正常,但当我在模式中提交_EditFile部分视图时,TempData值工作不正常

以下是编辑视图上的常见Javascript/ajax:

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
    <script>
        //Using this to scroll the page on the close of the modal/page refresh
         $(document).ready(function () {
            var JumpTo = '@ViewBag.JumpToDivId';
            if (JumpTo != "") {
                $(this).scrollTop($('#' + JumpTo).position().top);
            }
        });
        //Using this to Capture the click that opens the modals
        $('body').on('click', '.modal-link', function () {
            var actionUrl = $(this).attr('href');
            $.get(actionUrl).done(function (data) {
                $('body').find('.modal-content').html(data);
            });
            $(this).attr('data-target', '#modal-container');
            $(this).attr('data-toggle', 'modal');
        });
        //Using this to Capture the click that Submits the _EditFile,_DeleteFile,_CreateEdit forms on the modal
        $('body').on('click', '.relative', function (e) {
            e.preventDefault();
            var form = $(this).parents('.modal').find('form');
            var actionUrl = form.attr('action');
            var dataToSend = form.serialize();
            $.post(actionUrl, dataToSend).done(function (data) {
                $('body').find('.modal-content').html(data);
                var isValid = $('body').find('[name="IsValid"]').val() == 'True';
                var issueid = "";
                issueid = $('body').find('[name="issueidSaved"]').val();
                var jumpto = $('body').find('[name="jumpto"]').val();
                if (isValid) {
                    $('body').find('#modal-container').modal('hide');
                    if (issueid == "")
                    {
                        window.location.href = "/Issue/Edit/?id=" + issueid + "&jumpto=" + jumpto;
                    }
                }
            });
        })
        //Using this to Capture the click that Submits the _UploadFile form on the modal
        $(function () {
            $('body').on('click', '.fileupload', function (e) {
                e.preventDefault();
                var form = $(this).parents('.modal').find('form');
                var actionUrl = form.attr('action');

                var fdata = new FormData();
                $('input[name="file"]').each(function (a, b) {
                    var fileInput = $('input[name="file"]')[a];
                    if (fileInput.files.length > 0) {
                        var file = fileInput.files[0];
                        fdata.append("file", file);
                    }
                });
                $("form input[type='text']").each(function (x, y) {
                    fdata.append($(y).attr("name"), $(y).val());
                });
                $("form input[type='hidden']").each(function (x, y) {
                    fdata.append($(y).attr("name"), $(y).val());
                });
                $.ajax({
                    url: actionUrl,
                    method: "POST",
                    contentType: false,
                    processData: false,
                    data: fdata
                }).done((response, textStatus, xhr) => {
                    var isValid = $(response).find('[name="IsValid"]').val() == 'True';
                    var issueid = $(response).find('[name="issueidSaved"]').val();
                    var jumpto = $(response).find('[name="jumpto"]').val();
                    if (isValid) {
                        $('body').find('#modal-container').modal('hide');
                        window.location.href = "/Issue/Edit/?id=" + issueid + "&jumpto="+jumpto;
                    }
                   });
            })
        });

        $('body').on('click', '.close', function () {
            $('body').find('#modal-container').modal('hide');
        });

        $('#CancelModal').on('click', function () {
            return false;
        });

        $("form").submit(function () {
            if ($('form').valid()) {
                $("input").removeAttr("disabled");
            }
        });
    </script>
@节脚本{
@{wait Html.RenderPartialAsync(“_validationScript”);}
//在模式/页面刷新结束时使用此选项滚动页面
$(文档).ready(函数(){
var JumpTo='@ViewBag.JumpToDivId';
如果(跳到!=“”){
$(this).scrollTop($('#'+JumpTo).position().top);
}
});
//使用此选项捕获打开模态的单击
$('body')。在('click','modal link',函数(){
var actionUrl=$(this.attr('href');
$.get(actionUrl).done(函数(数据){
$('body').find('modal content').html(数据);
});
$(this.attr('data-target','#modal container');
$(this.attr('data-toggle','modal');
});
//使用此选项捕获在模式上提交_EditFile、_DeleteFile、_CreateEdit表单的单击
$('body')。关于('click','relative',函数(e){
e、 预防默认值();
var form=$(this).parents('.modal').find('form');
var actionUrl=form.attr('action');
var dataToSend=form.serialize();
$.post(actionUrl,dataToSend).done(函数(数据){
$('body').find('modal content').html(数据);
var isValid=$('body')。find('[name=“isValid”]')。val()='True';
var issueid=“”;
issueid=$('body').find('[name=“issueidSaved”]').val();
var jumpto=$('body').find('[name=“jumpto”]').val();
如果(有效){
$('body').find('modal container').modal('hide');
如果(issueid==“”)
{
window.location.href=“/Issue/Edit/?id=“+issueid+”&jumpto=“+jumpto;
}
}
});
})
//使用此选项捕获在modal上提交_UploadFile表单的单击
$(函数(){
$('body')。在('click','fileupload',函数(e){
e、 预防默认值();
var form=$(this).parents('.modal').find('form');
var actionUrl=form.attr('action');
var fdata=新表单数据();
$('input[name=“file”]”)。每个(函数(a,b){
var fileInput=$('input[name=“file”])[a];
如果(fileInput.files.length>0){
var file=fileInput.files[0];
fdata.append(“文件”,file);
}
});
$(“表单输入[type='text'])。每个(函数(x,y){
fdata.append($(y).attr(“名称”),$(y).val();
});
$(“表单输入[type='hidden'])。每个(函数(x,y){
fdata.append($(y).attr(“名称”),$(y).val();
});
$.ajax({
url:actionUrl,
方法:“张贴”,
contentType:false,
processData:false,
数据:fdata
}).done((响应、文本状态、xhr)=>{
var isValid=$(response).find('[name=“isValid”]').val();
var issueid=$(响应).find('[name=“issueidSaved”]').val();
var jumpto=$(response).find('[name=“jumpto”]').val();
如果(有效){
$('body').find('modal container').modal('hide');
window.location.href=“/Issue/Edit/?id=“+issueid+”&jumpto=“+jumpto;
public ActionResult Edit(string id)
{
    if (id == null)
    {
        id = TempData["ID"].ToString();                
    }
@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
    <script>
        //Using this to scroll the page on the close of the modal/page refresh
         $(document).ready(function () {
            var JumpTo = '@ViewBag.JumpToDivId';
            if (JumpTo != "") {
                $(this).scrollTop($('#' + JumpTo).position().top);
            }
        });
        //Using this to Capture the click that opens the modals
        $('body').on('click', '.modal-link', function () {
            var actionUrl = $(this).attr('href');
            $.get(actionUrl).done(function (data) {
                $('body').find('.modal-content').html(data);
            });
            $(this).attr('data-target', '#modal-container');
            $(this).attr('data-toggle', 'modal');
        });
        //Using this to Capture the click that Submits the _EditFile,_DeleteFile,_CreateEdit forms on the modal
        $('body').on('click', '.relative', function (e) {
            e.preventDefault();
            var form = $(this).parents('.modal').find('form');
            var actionUrl = form.attr('action');
            var dataToSend = form.serialize();
            $.post(actionUrl, dataToSend).done(function (data) {
                $('body').find('.modal-content').html(data);
                var isValid = $('body').find('[name="IsValid"]').val() == 'True';
                var issueid = "";
                issueid = $('body').find('[name="issueidSaved"]').val();
                var jumpto = $('body').find('[name="jumpto"]').val();
                if (isValid) {
                    $('body').find('#modal-container').modal('hide');
                    if (issueid == "")
                    {
                        window.location.href = "/Issue/Edit/?id=" + issueid + "&jumpto=" + jumpto;
                    }
                }
            });
        })
        //Using this to Capture the click that Submits the _UploadFile form on the modal
        $(function () {
            $('body').on('click', '.fileupload', function (e) {
                e.preventDefault();
                var form = $(this).parents('.modal').find('form');
                var actionUrl = form.attr('action');

                var fdata = new FormData();
                $('input[name="file"]').each(function (a, b) {
                    var fileInput = $('input[name="file"]')[a];
                    if (fileInput.files.length > 0) {
                        var file = fileInput.files[0];
                        fdata.append("file", file);
                    }
                });
                $("form input[type='text']").each(function (x, y) {
                    fdata.append($(y).attr("name"), $(y).val());
                });
                $("form input[type='hidden']").each(function (x, y) {
                    fdata.append($(y).attr("name"), $(y).val());
                });
                $.ajax({
                    url: actionUrl,
                    method: "POST",
                    contentType: false,
                    processData: false,
                    data: fdata
                }).done((response, textStatus, xhr) => {
                    var isValid = $(response).find('[name="IsValid"]').val() == 'True';
                    var issueid = $(response).find('[name="issueidSaved"]').val();
                    var jumpto = $(response).find('[name="jumpto"]').val();
                    if (isValid) {
                        $('body').find('#modal-container').modal('hide');
                        window.location.href = "/Issue/Edit/?id=" + issueid + "&jumpto="+jumpto;
                    }
                   });
            })
        });

        $('body').on('click', '.close', function () {
            $('body').find('#modal-container').modal('hide');
        });

        $('#CancelModal').on('click', function () {
            return false;
        });

        $("form").submit(function () {
            if ($('form').valid()) {
                $("input").removeAttr("disabled");
            }
        });
    </script>
<!--Modal Body Start-->

<div class="modal-content">
    <input name="IsValid" type="hidden" value="@ViewData.ModelState.IsValid.ToString()" />
    <input name="issueidSaved" type="hidden" value="@ViewBag.ID" />
    <input name="jumpto" type="hidden" value="@ViewBag.JumpToDivId" />
    <!--Modal Header Start-->
    <div class="modal-header">
        <h4 class="modal-title">Delete File</h4>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
    </div>
    <!--Modal Header End-->

    <form asp-action="DeletetheFile" asp-route-attachmentid="@ViewBag.id" asp-route-issueId="@ViewBag.issueId" asp-controller="Attachment" method="post" enctype="multipart/form-data">

        @Html.AntiForgeryToken()

        <div class="modal-body form-horizontal">
            Are you sure you want to delete the @ViewBag.title File?

            <!--Modal Footer Start-->
            <div class="modal-footer">
                <button data-dismiss="modal" id="cancel" class="btn btn-default" type="button">No</button>
                <input type="submit" class="btn btn-success relative" id="btnSubmit" data-save="modal" value="Yes">
            </div>
            <div class="row">
                &nbsp;
            </div>

        </div> <!--Modal Footer End-->
    </form>

</div>
<script type="text/javascript">
    $(function () {

    });
</script>

<!--Modal Body End--> 

[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult DeletetheFile(int attachmentid, string issueId)
{
    string response = _adoSqlService.DeleteAttachment(attachmentid);
    ViewBag.ID = issueId;
    ViewBag.JumpToDivId = "upload";
    TempData["ID"]= issueId;
    TempData.Keep();
    return PartialView("_DeleteFile");
}
    <form asp-action="EditFile" asp-controller="Attachment" method="post" enctype="multipart/form-data">

        @Html.AntiForgeryToken()

        <div class="modal-body form-horizontal">
            <input name="issueId" type="hidden" value="@ViewBag.issueId" />
            <input name="attachmentId" type="hidden" value="@ViewBag.attachmentId" />
            <label class="control-label">@ViewBag.aFileName</label><br />
            Make changes to description then select "Save Changes".<br />
            <input name="aIssueAttachmentDescription" class="form-control formtableborders" id="titletext" value="@ViewBag.aIssueAttachmentDescription" />

            <!--Modal Footer Start-->
            <div class="modal-footer">
                <button data-dismiss="modal" id="cancel" class="btn btn-default" type="button">No</button>
                <input type="submit" class="btn btn-success relative" id="btnSubmit" data-save="modal" value="Save Changes">
            </div>
            <div class="row">
                &nbsp;
            </div>

        </div> <!--Modal Footer End-->
    </form>

</div>
<script type="text/javascript">
    $(function () {

    });
</script>

<!--Modal Body End-->  

[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult EditFile(IFormCollection collection)
{
    AttachmentModel model = new AttachmentModel();

    model.attachmentId = Convert.ToInt32(collection["attachmentId"]);
    model.aIssueAttachmentDescription = collection["aIssueAttachmentDescription"];
    string response = _adoSqlService.EditFileDescription(model);
    ViewBag.ID = collection["issueId"];
    ViewBag.JumpToDivId = "upload";
    TempData.Remove("ID");
    TempData["ID"] = collection["issueId"];
    TempData.Keep();
    return PartialView("_EditFile");
}
TempData["ID"] = collection["issueId"];
TempData["ID"] = collection["issueId"].ToString();