区域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分奉上!
<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分奉上!
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代码
请问什么属性可以用于存储数据库查询的值,重新给这个属性赋值就可以立即在页面上显示出结果吗?我目前也已经通过return PartialView("UserControlInfos", info);给控件赋值了,问题是值变了,页面显示的内容还是没变化啊。
是的,因为页面打开的时候就要对控件数据进行初始化,并显示出来。那可不可以在用户控件中声明那几个html的客户端id,当ajax返回数据后,用js手动进行绑定。