我已经从使用IE7转换为IE9,不幸的是我的部分视图被返回并用部分视图覆盖了整个页面。
点击html中的按钮,我打电话给
在javascript中:
$.ajax({
type: "POST",
url: $('form').attr('action'),
data: $('form').serialize(),
dataType: "text",
success: function (response) {
alert('Pass'); // This will be hit
},
error: function (errorObj) {
alert('Error');
}
});
然后转到控制器:
[HttpPost]
public ActionResult Index(Index model)
{
return NewFeature(model);
}
[HttpPost]
public ActionResult NewFeature(Index model)
{
return PartialView("_feature", model);
}
知道它可能是什么吗?
答案 0 :(得分:0)
只要它不是提交按钮,就不需要阻止默认行为。如果是提交按钮,则需要通过返回false来覆盖基本操作。即
<input type="submit" onclick="return myFunction()" />
function myFunction()
{
DoWork();
return false;
}
由于您返回部分内容并确认警报正在被点击,因此答案应该简单如下:
success: function (response) {
$("#DivIdToUpdate").html(response);
}
另外需要注意的是,类型可能应该是json而不是text,但是我看不到你的其余代码。此外,在您的控制器上,您似乎错误地调用了这些函数。尝试更改此内容。
[HttpPost]
public ActionResult Index(Index model)
{
return this.RedirectToAction("NewFeature", new { model = model });
}
[HttpGet]
public ActionResult NewFeature(Index model)
{
return this.PartialView("_feature", model);
}
此代码关注帖子 - &gt;重定向 - &gt;获取模式并将发出两个请求,一个用于工作,另一个用于获取新数据。这将导致ModelState刷新并重新加载您需要的所有数据。 javascript ajax帖子将从控制器接收ActionResult作为编译的cshtml,因此通过调用上面的代码,html将在你喜欢的任何元素内部呈现。
此外,
url: $('form').attr('action'),
可以轻松翻译成:
url: '@Url.Content("~/Home/Index")',