0

我正在尝试使异步 jQuery 访问 MVC 操作以返回视图。出于某种原因,尽管它访问了操作,但它并没有呈现视图。

这是 jQuery:

function showArchive(url) {
    var moreRecentThanDate = $("#chooseDate").val();

    $.get(url, { moreRecentThan: moreRecentThanDate });
}

这是行动:

    [HttpGet]
    public ActionResult ShowArchive(DateTime moreRecentThan)
    {
        List<NewIndexViewModel> model = Service.GetArchives(moreRecentThan);
        ViewBag.IsArchive = true;

        return View("Index", model);
    }

PS:我从一个特别的模态弹出窗口中调用这个 jQuery;

4

3 回答 3

0

jQuery部分

$.get( url, { moreRecentThan: moreRecentThanDate }, function(data) {

// 回调或响应 $('#details_Div').replaceWith(data);

}); 

其中用户控制器有一个名为 details 的操作,它执行以下操作:

public ActionResult Details( int id )
{
  //create a model

    return PartialView( "UserDetails", model );
}

PartialView在这里很重要。

这是假设您的部分视图是一个具有 id detailsDiv 的容器,因此您只需将整个内容替换为调用结果的内容。

UserDetails 部分视图 http://evolpin.wordpress.com/2011/04/26/asp-net-mvc-partial-view-and-ajax-real-world-example/

<div id="details_Div">
    <HTML will be replaced once the ajax is completed>
</div>
于 2013-08-19T13:00:56.220 回答
0

如有疑问,请检查 jQuery 文档get(),我相信倒数第二个示例就是您想要的。

$.get(url, { moreRecentThan: moreRecentThanDate })
.done(function(data) {
  $('#myElem').append(data);
  // or $('#myElem').html(data);
});
于 2013-08-19T12:57:20.237 回答
0

您应该使用如下语法将结果附加到某处:

$.get(url, { moreRecentThan: moreRecentThanDate }).done(function(data) {
    $('.result').html(data);
)};
于 2013-08-19T12:58:19.227 回答