C# 如何将MVC视图返回给JQuery post success委托
我使用以下JQuery方法将数据发布到MVC控制器中的操作: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();
$('#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框,在更改时重新加载内容