ASP.NET 能做前端吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET 能做前端吗?相关的知识,希望对你有一定的参考价值。
刚开始学ASP.NET,产生了这样的疑问:
ASP.NET可以做后台这毫无疑问。
但是,在后台动态生成了.aspx之后,发给用户。
在用户的机器上,如果也是Windows,也有.NET Framework,所以ASP.NET是不是也可以承担前端的任务?
比如当你在前端点击了一下网页上的某个按钮,会触发某个事件,里面有相应的操作:
比如只是textBox1.Text = "";
这个操作应该是在客户机上完成的吧?
但是,当里面是Response.Redirect(URL)的时候才会连接客户机。
也就是说ASP.NET其实也能做前段的事情,我这样理解对吗?
我看了你的问题3遍,不知道理解的对不对。我就先针对你提出的现象,来解释一下这种现象。说错了,就当略过吧。
在后台动态生成了.aspx之后,发给用户。
在用户的机器上,如果也是Windows,也有.NET Framework,所以ASP.NET是不是也可以承担前端的任务?
这个地方,其实发送给客户的永远是html代码,而并非.aspx页面。为什么.aspx页面会变成html代码,是因为服务器(iis)处理的原因。.aspx是微软自己定义的模板,服务器会将.aspx模板解析成html代码,发送给客户的浏览器,所以客户的浏览器接收到的永远都是html代码
当你在前端点击了一下网页上的某个按钮,会触发某个事件,里面有相应的操作:
比如只是textBox1.Text = "";
这个操作应该是在客户机上完成的吧?
点击的操作确实是在客户端完成的,但是赋值的代码是在服务器端完成的。这里面的过程是这样的。
客户点击按钮-〉浏览器将数据发送给服务器(也就是form中都有一个action=“这就是将客户端的数据提交到的位置”)-〉服务器端生成一个page类,封装了页面中的所有服务器端控件,请求对象等等-〉服务器端根据按钮的id,与服务器端的控件的id进行比配,匹配成功,执行服务器端控件的代码(也就是按钮事件代码),执行完毕之后,再经过第1点的处理,返回给客户端html代码。
aspx页面上的按钮点击,是通过post发送到服务器处理完了,重新生成html代码发到客户机器上的。aspx服务端控件的效率有些低,少用。应该多用javascript来完成。
ASP.NET 前端数据绑定---<%#%>及Eval()的使用
ASP.NET 前端html代码中会经常出现的<%%>的代码,里面的文本其实就是不能直接输出到客户端浏览器的文本,是需要服务器解释的。
在ASP中,<%%>里面的文本是vbscript或者javascript代码,在ASP.NET中,<%%>里面的文本就是.net平台下支持的语言。
具体有三种:<%%>,<%#%>,<%=%>,后两种主要是用于asp.net前端数据绑定的。
一 、<%=%>
在.aspx页面,<%= %>标签可以调用后台.CS的变量/属性或者方法,不过被调用的变量或方法必须是public的。
例:Default.cs文件里面有:
public string str = "test"; public string ReturnStr() { return "test"; }
那么前端Default.aspx文件里面就可以这样写:
<asp:Label ID="Label2" runat="server" Text=‘<%=str%>‘></asp:Label> <asp:Label ID="Label1" runat="server" Text=‘<%= ReturnStr() %>‘></asp:Label>
二、<%#%>
前端aspx页面中,一帮服务器控件数据绑定的语法,结合Eval()方法绑定数据源(ASP.NET 提供了一个名为 DataBinder.Eval 的静态方法,该方法计算后期绑定的数据绑定表达式,并将结果格式化为字符串(可选)。利用此方法,可以避免许多在将值强制为所需数据类型时必须执行的显式强制转换操作,DataBinder.Eval需要使用参数来指定容器)
例:Repeater控件,在Page_Load()方法中,加载数据:
后台:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { intopage(DropDownListMgrDate.SelectedValue.ToString()); //不会每次刷新页面都重新绑定数据 } }
private void intopage(string Batchid) { this.Repeater1.DataSource = dmgr.GetCBProduct_MgrList(this.AspPage.CurrentPageIndex, AspPage.PageSize,Batchid);//CurrentPageIndex:当前页索引值;PageSize:分页每页所能容纳值 this.Repeater1.DataBind(); }
这里,Repeater1.DataSource的数据源既可以是DataSet,也可以是List,这里是List,对应前端DataBinder.Eval方法的参数是:ColumnName/属性名称
前端:
<td> <%#DataBinder.Eval(Container.DataItem, "include_in_quantity")%> </td> <td title="<%#DataBinder.Eval(Container.DataItem, "part_description")%>"> <%#DataBinder.Eval(Container.DataItem, "part_description").ToString().Length>20?DataBinder.Eval(Container.DataItem, "part_description").ToString().Substring(0,20)+"...":DataBinder.Eval(Container.DataItem, "part_description").ToString()%> </td>
这里、、、
以上是关于ASP.NET 能做前端吗?的主要内容,如果未能解决你的问题,请参考以下文章
能说一下ADO.NET 和.NET,还有asp.NET的区别吗?
asp.net中前端先调用的后台方法,然后在后台再调用前端方法没有作用
我可以让 jQuery 读取 ASP.NET Core 2.1 的标签助手吗?似乎完全无视他们
请问在ASP.NET项目MVC4项目中可以使用jQuery.i18n.properties 实现 Web 前端的国际化吗?