我想要实现的是更新包含部分视图的页面的某些部分。我这样做的尝试如下:
$.ajax({
type: 'GET',
url: actionUrl,
success: function (data) {
$("#results").html("");
$("#results").append(@Html.Partial("_FirstPartial", data.FirstDataSet));
$("#results").append(@Html.Partial("_SecondPartial", data.SecondDataSet));
}
});
当然我无法将JS变量传递给ASP MVC这样的方法,所以我怎么能这样做?或者可能有一种完全不同的,更好的方法来更新页面?
答案 0 :(得分:2)
查看(Javascript):
$.ajax({
type: 'GET',
url: actionUrl,
success: function (data) {
$("#results").html("");
$.post('@Url.Action ("FirstPartial")',{data:data.FirstDataSet},function(ret){
$("#results").append(ret);
$.post('@Url.Action ("SecondPartial")',{data:data.SecondDataSet},function(ret2){
$("#results").append(ret2);
}
}
}
});
控制器:
public ActionResult FirstPartial(string data)
{
return PartialView("_FirstPartial", data);
}
public ActionResult SecondPartial(string data)
{
return PartialView("_SecondPartial", data);
}
您需要使用部分操作(返回部分视图)。在javascript中,获取数据集之后,您调用另一个部分操作来呈现数据集。
我嵌套了两个ajax调用来渲染第一个视图下面的第二个视图。如果删除嵌套,则第二个可以在第一个嵌套之前渲染。
答案 1 :(得分:0)
在你的控制器方法中输入你想要的部分,然后在你的Index.cshtml文件中做这样的事情:
<script>
var Services = {
linkToPartial: '@Url.Action('MethodName', 'Controller')'
}
</script>
此代码将提供一个操作链接,您可以在$ ajax成功方法中使用该链接并提供参数。
$("#results").html("");
$.ajax({
method: 'GET',
url: Services.linkToPartial,
data: {
argumentName: data.FirstDataSet
}
}).done(function (html) {
$('#results').append(html);
});