我有一个包含两个局部视图的视图。在我的控制器中,我有一个针对各种http post方法的通用操作方法,这里是示例代码:
public ActionResult MyCommonMethode(modelclass object)
{
var BALObject = new BusinessLogic();
-----------
-----------
return View("View", object);
}
[HttpPost, ActionName("MyCommonMethode"), Button(ButtonName = "searchbutton")]
public ActionResult search(string searchstring)
{
---------
-------------
return()
}
[HttpPost, ActionName("MyCommonMethode"), Button(ButtonName = "Save")]
public ActionResult Edit(modelclass Object)
{
try
{ -------------
-----------
-----------------
return View("view", object);
}
catch (Exception e)
{
----------------
return RedirectToAction("error");
}
}
请注意,常用方法没有任何视图,并且它不是http get方法。
现在如果我想使用ajax调用/ post而不是表单提交,如图所示
$("#button").click(function () {
//Set inserted values
var name = $("#textvalue").val();
// Call Create action method
$.post('/myController/search', {
"searchstring": name,
},
function () {
alert("data is posted successfully");
window.location.reload(true);
});
});
所以不是加载整个页面我只是想刷新我的局部视图。 我需要注意的是什么?请帮助。
答案 0 :(得分:0)
只需替换它:
function () {
alert("data is posted successfully");
window.location.reload(true);
});
使用:
function (data) {
alert("data is posted successfully");
$("#result").html(data);
});
#result
是部分视图的容器。
答案 1 :(得分:0)
您已使用“搜索操作”方法中的属性将操作名称更改为MyCommonMethode。 所以你必须像我在下面的代码中提到的那样提到UlR为/ myController / MyCommonMethode。
请更改代码中的网址
$("#button").click(function () {
//Set inserted values
var name = $("#textvalue").val();
// Call Create action method
$.post('/myController/MyCommonMethode', {
"searchstring": name,
},
function () {
alert("data is posted successfully");
window.location.reload(true); **or** $("#result").html(data);
});
});