关于asp.net mvc2中局部刷新ascx的问题

3661512 2013-07-05 11:18:47


区域3是控件UserControlInfos.ascx,现在想通过捕获点击区域1中的按钮"button0"激发JS函数selcontrol(obj),提交到controllers进行数据库查询,然后将查询结果返回到UserControlInfos.ascx控件。

现在的问题是在controllers中已经查询到了数据,并返回了结果,但是区域3的控件UserControlInfos.ascx显示的内容依然没有改变,请问如何将新查询返回的数据显示到区域3。

view层处理选中消息的JS代码:
<script type="text/javascript">
function selcontrol(obj) {//选中控件

$.get(
"/home/index/", {
str: obj.id
},
function(data,state){
//这里显示从服务器返回的数据
alert(data);
//这里显示返回的状态
alert(state);
}
)
}
</script>

controllers层相应响应代码:
UIDesignerRepository UIDRes = new UIDesignerRepository();
public ActionResult Index(string str = null)
{
IQueryable<UIInfo> info = null;
if (!string.IsNullOrEmpty(str))
{
info = UIDRes.FindUIsByText(str); //根据字符串查询数据库操作
}
if (Request.IsAjaxRequest())
{
return PartialView("UserControlInfos", info);
}
return View(info);
}

UserControlInfos.ascx代码

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<UIDesigner.Models.UIInfo>" %>
<script src="/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>

<% if (Model != null){%>
<fieldset id="fdProp">
<legend>属性</legend>

<div class="display-label"><strong>UID:</strong> <%: Model.UID %></div>
<div class="display-field"></div>

<div class="display-label"><strong>value:</strong> <%: Model.value %></div>
<div class="display-field"></div>

<div class="display-label"><strong>pixelleft:</strong> <%: Model.pixelleft %></div>
<div class="display-field"></div>

<div class="display-label"><strong>pixeltop:</strong> <%: Model.pixeltop %></div>
<div class="display-field"></div>

<div class="display-label"><strong>disabled:</strong> <%: Model.disabled %></div>
<div class="display-field"></div>

<div class="display-label"><strong>EventDate:</strong> <%: String.Format("{0:g}", Model.EventDate) %></div>
<div class="display-field"></div>
</fieldset>
<%} %>


最好有示例代码,谢谢,100分奉上!
...全文
169 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
零点逸族 2013-07-05
  • 打赏
  • 举报
回复
$("#button0").bind("click", function (e) {
    e.preventDefault();

    $.get('/home/index/', { str: obj.id }, function (data, status) {
        $("#controlarea3").html(data);
    }, "html");
});
  • 打赏
  • 举报
回复
最终用户控件也会解析成html,那么你得到数据后,直接利用js找到对应位置,经取到的值传过去即可,其实无需用户控件,利用ajax取值后,直接改变对应位置即可
xingxiaobai 2013-07-05
  • 打赏
  • 举报
回复
貌似用户控件在ajax返回数据之前已经完成了绑定,所以数据不显示。
吴青峰 2013-07-05
  • 打赏
  • 举报
回复
用户控件也有自己的属性的,把查询出来的数据赋值给用户控件里面的一个属性。 然后在通个这个属性,设置你用户控件相应的值不就可以了。 用户控件,设置的属性,可以是任何数据类型的。 记得给我满分。
xingxiaobai 2013-07-05
  • 打赏
  • 举报
回复
引用 9 楼 3661512 的回复:
[quote=引用 2 楼 xingxiaobai 的回复:] 貌似用户控件在ajax返回数据之前已经完成了绑定,所以数据不显示。
是的,因为页面打开的时候就要对控件数据进行初始化,并显示出来。[/quote] 那可不可以在用户控件中声明那几个html的客户端id,当ajax返回数据后,用js手动进行绑定。
3661512 2013-07-05
  • 打赏
  • 举报
回复
引用 2 楼 xingxiaobai 的回复:
貌似用户控件在ajax返回数据之前已经完成了绑定,所以数据不显示。
是的,因为页面打开的时候就要对控件数据进行初始化,并显示出来。
3661512 2013-07-05
  • 打赏
  • 举报
回复
引用 1 楼 qingfeng_wu 的回复:
用户控件也有自己的属性的,把查询出来的数据赋值给用户控件里面的一个属性。 然后在通个这个属性,设置你用户控件相应的值不就可以了。 用户控件,设置的属性,可以是任何数据类型的。 记得给我满分。
请问什么属性可以用于存储数据库查询的值,重新给这个属性赋值就可以立即在页面上显示出结果吗?我目前也已经通过return PartialView("UserControlInfos", info);给控件赋值了,问题是值变了,页面显示的内容还是没变化啊。
饕餮123 2013-07-05
  • 打赏
  • 举报
回复
引用 1 楼 qingfeng_wu 的回复:
用户控件也有自己的属性的,把查询出来的数据赋值给用户控件里面的一个属性。 然后在通个这个属性,设置你用户控件相应的值不就可以了。 用户控件,设置的属性,可以是任何数据类型的。 记得给我满分。
跟+1
3661512 2013-07-05
  • 打赏
  • 举报
回复
引用 3 楼 Return_false 的回复:
最终用户控件也会解析成html,那么你得到数据后,直接利用js找到对应位置,经取到的值传过去即可,其实无需用户控件,利用ajax取值后,直接改变对应位置即可
值传过去了,但是页面不会直接显示出来吧,还是需要局部刷新。貌似操作也不简单啊,能给点示例代码吗?
3661512 2013-07-05
  • 打赏
  • 举报
回复
引用 4 楼 yumenjianke 的回复:
$("#button0").bind("click", function (e) {
    e.preventDefault();

    $.get('/home/index/', { str: obj.id }, function (data, status) {
        $("#controlarea3").html(data);
    }, "html");
});
请问这段JS代码放哪里?放index.aspx里的话激发不了$("#controlarea3").html(data);因为controllers里是返回到ascx,而不是aspx里, return PartialView("UserControlInfos", info);,具体请参看controllers代码

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧