C# 如何将MVC视图返回给JQuery post success委托

C# 如何将MVC视图返回给JQuery post success委托,c#,jquery,asp.net-mvc,post,C#,Jquery,Asp.net Mvc,Post,我使用以下JQuery方法将数据发布到MVC控制器中的操作: $('#btnAddNewTest').on("click", function () { var date = $('#HIVTestTestDate').val(); var result = $('#HIVTestTestResult').val(); var cd4 = $('#HIVTestCD4Count').val(); var pID = $('#PatientID').val();

我使用以下JQuery方法将数据发布到MVC控制器中的操作:

$('#btnAddNewTest').on("click", function () {
    var date = $('#HIVTestTestDate').val();
    var result = $('#HIVTestTestResult').val();
    var cd4 = $('#HIVTestCD4Count').val();
    var pID = $('#PatientID').val();

    var dataToSend = { patientID: pID, testDate: date, resultID: result, cd4Count: cd4 };

    $.post("/HIVInformation/AddHIVTest/", dataToSend, function (receivedData) {
        location.reload(false); //Don't want to do this
    });

    return false;
});
以下是我的控制器中的操作方法:

[HttpPost]
    public ActionResult AddHIVTest(Guid patientID, DateTime testDate, Guid resultID, int cd4Count)
    {
        MvcPatientDetailsHIVViewModel model = new MvcPatientDetailsHIVViewModel(patientID);
        model.LoadAllData();

        try
        {
            //add the HIV Test
            model.HIVTestResult = new Common.Models.PatientHIVTestModel()
            {
                ID = Guid.NewGuid(),
                PatientID = patientID,
                TestDate = testDate,
                HIVTestResultID = resultID,
                CD4Count = cd4Count
            };

            //call the add method
            model.AddHIVTestResults();
        }
        catch (Exception ex)
        {
            ModelState.AddModelError("", ex);
        }

        return View("Details", model);
    }

如果我注释掉“
location.reload(false)”“我的页面未刷新。如何序列化要在帖子的
函数(receivedData)
委托中返回的Mvc视图?那么如何在JQuery代码中显示我的视图呢?

如果可以的话,我建议您使用ajax、局部视图和容器
div
将结果加载到其中

例如:

脚本:

$(document).ready(function () {
        $("#btnAddNewTest").on("click", function () {

            $.ajax({
                url: '@Url.Action("YourAction", "YourController")',
                type: 'post',
                data: {
                    yourData1: value1,
                    yourData2: value2,
                },
                success: function (result) {
                    $('#dynamicContent').html(result);
                }
            });
        });
    });
 public ActionResult YourAction(int yourData1= 1, int yourData2 = 0)
        {
            return PartialView("~/yourviewPath/_YourPartialView.cshtml", yourResultModel)
        }
<div id="dynamicContent" class="Float_Clear">
    @Html.Partial("~/yourviewPath/_YourPartialView.cshtml", Model)
</div>
控制器:

$(document).ready(function () {
        $("#btnAddNewTest").on("click", function () {

            $.ajax({
                url: '@Url.Action("YourAction", "YourController")',
                type: 'post',
                data: {
                    yourData1: value1,
                    yourData2: value2,
                },
                success: function (result) {
                    $('#dynamicContent').html(result);
                }
            });
        });
    });
 public ActionResult YourAction(int yourData1= 1, int yourData2 = 0)
        {
            return PartialView("~/yourviewPath/_YourPartialView.cshtml", yourResultModel)
        }
<div id="dynamicContent" class="Float_Clear">
    @Html.Partial("~/yourviewPath/_YourPartialView.cshtml", Model)
</div>
Html:

$(document).ready(function () {
        $("#btnAddNewTest").on("click", function () {

            $.ajax({
                url: '@Url.Action("YourAction", "YourController")',
                type: 'post',
                data: {
                    yourData1: value1,
                    yourData2: value2,
                },
                success: function (result) {
                    $('#dynamicContent').html(result);
                }
            });
        });
    });
 public ActionResult YourAction(int yourData1= 1, int yourData2 = 0)
        {
            return PartialView("~/yourviewPath/_YourPartialView.cshtml", yourResultModel)
        }
<div id="dynamicContent" class="Float_Clear">
    @Html.Partial("~/yourviewPath/_YourPartialView.cshtml", Model)
</div>

@Html.Partial(“~/yourviewPath/\u YourPartialView.cshtml”,Model)

我使用相同的概念创建的实例

是整个视图吗?还是只是局部的观点?如果只是局部视图,则可以获取
div
或任何其他容器,在其中显示更新的内容,并在
success
调用中使用
$('#divID').html(receivedData)
(false);
带有
$(someElement).html(receivedData);
在调用
$后返回
html
。post
可以执行
$(您的div id).html(数据)
;我想,你看起来像这样,为什么要用jquery加载整个页面?你不能只加载页面上应该更新的区域吗?我这边的视图设计得很糟糕,有多个“子帖子”部分这应该会发生,但不可能以一种简单的方式发生,因为不存在局部视图,html表单标记也不应该嵌套。我不希望你的答案作为解决方案,因为我现在将在多个局部视图中分解表单,这种方法应该会起作用。谢谢这里有一个实例?你指向的链接是另一个链接ist框,在更改时重新加载内容