我有一个名为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建议的方法。但那也没有用
答案 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,看看这是否是你想要完成的事情