post-jquery后更新局部视图

时间:2011-03-03 07:32:00

标签: asp.net-mvc jquery

我有一个名为searchResultPlayer的ascx文件。 在视图中,我使用以下代码

呈现上述ascx文件
<div id="player">
    <% Html.RenderPartial("SearchResultPlayer"); %>
  </div>

我正在使用以下jquery代码发布。

 $('#resultTable tr').live('click', function (event) {
 $.post("/Search/SearchResult", {
             content: "GetCallDetails"
         }
         );
  });

邮政工作正常。从控制器我返回一个partialview.Code如下所示

 return PartialView("SearchResutPlayer", searchModel); .

控制器在每次发布后返回此内容。我可以在调试时看到。

我的问题是如何使用jquery更新视图中的返回值?

我知道我可以使用这样的东西

 <% using (Ajax.BeginForm("SearchResult", "Search", 
                        new AjaxOptions {                              
                           HttpMethod="POST",
                           UpdateTargetId="player",                             
                        })) { %> }

但由于某些问题,我无法使用ajax开始表单。所以在jquery中有什么像UpdateTargetId ???

修改

我尝试了Darin建议的方法。 我像这样编写jquery

                    $('#player').load(
                 '<%= Url.Action("SearchResult", "Search") %>',
                 { content: 'GetCallDetails' }
             );

查看

    if (Request.IsAjaxRequest())
         {
             if (content != null)                

             {
                 searchModel.selectedRecord = "test message";
                 return PartialView("SearchResutPlayer", searchModel);
             }
         }

ascx文件

 <label> <%= Html.Encode(Model.selectedRecord) %></label>

最初,Model.selected有一个像'loaded'这样的值。但是在ajax发布之后它没有改为“测试消息”

我也尝试过PsychoCoder建议的方法。但那也没有用

2 个答案:

答案 0 :(得分:4)

  

但由于某些问题,我无法使用ajax begin form。

有问题吗?我不会将此称为问题。我称之为好设计。如果你不能使用Ajax.*助手,你是一个快乐的人。就个人而言,我讨厌那些帮助者,因为他们将你的标记变成污染,对于MVC 1和2尤其如此。

所以在jQuery中你有.html()函数允许你设置给定元素的html:

$('#resultTable tr').live('click', function (event) {
    $.post(
        '<%= Url.Action("SearchResult", "Search") %>', 
        { content: 'GetCallDetails' }, 
        function(result) {
            $('#player').html(result);
        }
    );
});
使用.load()功能

甚至更轻松:

$('#resultTable tr').live('click', function (event) {
    $('#player').load(
        '<%= Url.Action("SearchResult", "Search") %>', 
        { content: 'GetCallDetails' }
    );
});

还要注意使用url helper而不是硬编码url。在处理url时你应该总是使用url helper,因为StackOverflow上有百分之百的问题就像我的应用程序在IIS中部署时停止工作而我只是不想要一个: - )

答案 1 :(得分:0)

看一下问题here,看看这是否是你想要完成的事情