ASP.NET MVC中能否嵌套WEB控件页面使用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET MVC中能否嵌套WEB控件页面使用?相关的知识,希望对你有一定的参考价值。
或者是说:ASP.NET MVC的View页面中使用了如.NET的GridView、Repeater控件怎样在Controller中绑定数据到控件里面呢?
建议不要这样做,我一直在用asp.net的MVC,很久没有用过服务器控件了,建议用table写,很简单的,其实<table>
<%foreach(var item in (Article)ViewData["Article"])%>
<tr>
<td><%=item.content%></td>
</tr>
<%%>
</table>
上面是我们读取文章时常写的东西。其中Article是一个Model,映射数据库中的一个表。 参考技术A 可以的,不过我建议 还是用table
简单点的方法是 先在conteroller里把table赋值给ViewData
前台 DataSource='<%#ViewData["Students"]%>' 参考技术B 可以的追问
然后绑定运行之后出现了如下错误了:
The view at '~/Views/Home/Repeater.aspx' must derive from ViewPage, ViewPage, ViewUserControl, or ViewUserControl.
我就是想实现在Controller中绑定数据到View里面的控件。
ASP.NET 在嵌套在更新面板中的用户控件中注入 javascript
【中文标题】ASP.NET 在嵌套在更新面板中的用户控件中注入 javascript【英文标题】:ASP.NET inject javascript in user control nested in update panel 【发布时间】:2010-09-23 00:31:50 【问题描述】:我正在尝试在更新面板的异步回发期间通过 Page.LoadControl 方法将带有用户 Web 控件的 javascript 代码加载到页面中。
我已经尝试了专门为该场景设计的脚本管理器方法,但 javascript 只是没有返回给用户。
为了更好地解释我的场景:
母版页具有脚本管理器,并且一个页面在异步回发期间通过 Page.LoadControl 方法加载用户控件。自定义控件在预渲染事件处理程序中注入 javascript。这是注入js的时间问题还是不可能这样做?
【问题讨论】:
【参考方案1】:你试过了
Page.ClientScript.RegisterStartUpScript(GetType(Page), "key", <your script here>, addSctiptTags:=true)
我们在用户控件中执行此操作,它对我们有用
HTH
【讨论】:
【参考方案2】:可以使用ScriptManager类的RegisterStartupScript方法注入可执行脚本:
public partial class WebUserControl : System.Web.UI.UserControl
protected void Page_PreRender(object sender, EventArgs e)
ScriptManager.RegisterStartupScript(this, GetType(), ClientID, "alert(1)", true);
【讨论】:
我发现这仅适用于同步回发,不适用于异步 UpdatePanel-回发。我错过了什么吗?【参考方案3】:你可以这样做
string scr;
scr = "<script src='/scripts/myscript.js'></script>"
Page.ClientScript.RegisterStartupScript(GetType(Page), "key", scr, false)
HTH
【讨论】:
【参考方案4】:如果您不想对 JavaScript 进行硬编码,而是从文件中包含它,请调用 ScriptManager.RegisterClientScriptInclude,然后在 ScriptManager.RegisterStartupScript 中调用您的初始化函数。
protected void Page_Load(object sender, EventArgs e)
ScriptManager.RegisterClientScriptInclude(
this, GetType(), "formatterScript", ResolveUrl("~/js/formatter.js"));
ScriptManager.RegisterStartupScript(
this, GetType(), "formatTableFunction", "formatTable()", true);
【讨论】:
【参考方案5】:如果您的控件嵌套在 asp.net 模式弹出窗口中,则将 RegisterStartupScript 放在 Page_PreRender 事件中可能不起作用。而是在 IsPostBack = False 时将其放入 Page_Load。
【讨论】:
以上是关于ASP.NET MVC中能否嵌套WEB控件页面使用?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC或者.net Core mvc 页面使用富文本控件的 保存问题