ASP.NET MVC(2)

来源:互联网 发布:mysql怎么删除列 编辑:程序博客网 时间:2024/05/20 18:45

1.把datatable传到前台,使用ViewData传递,采用webform渲染方式,弱类型

还可以使用

ViewBag,danamic动态类型,来添加前台数据

ViewData["data"]=  SqlHelper.ExecuteDataTable(sqlStr);
<div>        <%            DataTable dt = (DataTable)ViewData["data"]; %>         <table>            <thead>                <tr>                    <td>Login</td>                    <td>Email</td>                    <td>Mobile</td>                </tr>            </thead>            <tbody>                 <% foreach (DataRow v in dt.Rows)                   {                 %>                <tr>                    <td><%: v["Login"%></td>                    <td><%: v["Email"%></td>                    <td><%: v["Mobile"%></td>                </tr>                <%%>            </tbody>        </table>    </div>
2.从view获取数据方式,post提交过来,一般用FormCollection集合来获取或者用Request


public ActionResult ProcessAdd(FormCollection  collection)        {             string userName = Request["userName"];            string userName = Request.Form["userName"];            string userName.Request.QueryString["userName"];            string userName=collection["userName"]            return  RedirectToAction("Index");         }

Request.Form是获取以POST方式提交的表单数据; Request.QueryString主要是获取地址栏参数或者以Get方式提交的数据 而Request则包含以上两种方式,会在Request.QueryString和Request.Form中都查询一遍变量。但是优先获取GET方式提交的数据,即Request.QueryString

Request:包含以上两种方式(优先获取GET方式提交的数据),它会在QueryString、Form、ServerVariable中都搜寻一遍。

在MVC中提交过来的表单数据自动放在FormCollection中
3.HtmlHelper详解

在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟
微软的MVC就是传统的请求处理响应的回归。所以抛弃之前的那种事件响应的模型,抛弃服务器端控件也理所当然。但是如果手写Html标签效率又比较低,可重用度比较低。微软为开发人员快速开发前台页面提供了丰富的HtmlHelper的辅助类,辅助我们快速开发前台页面,也提供了可扩展的接口,前台页面的标签可以可以做到高度可重用。
 HtmlHelper还继承了Model元数据的校验、ViewData和ViewBag数据绑定装配等自动化功能,也是非常实用的功能
 HtmlHelper还提供了强类型标标签更是在开发阶段就实现编译检测。提高了编码的效率。



引列,View页跳转到其它页面,使用注册Url.Action或者Html.ActionLink更方便,HtmlHelper提供了简化html标签的语法

<a href="/home/register">注册页面</a><a href="<%: Url.Action("Register","Home"%>">注册</a><%:Html.ActionLink("这次页面""Register""Home")%>
<%:Html.ActionLink("这次页面""Register""Home"new { name = "itcast" }, new { demo = "ss" })%>

自动装配,Action中的ViewData的键值和View前台传过去的name一样,那么它会把ViewData中的值对应传过去


使用强类型编程,往ViewData.Model传实体

public ActionResult HtmlHelper()        {            UserInfo user = new UserInfo() { Info = "灵儿"Name = "备足"Note = "只是" };            ViewData["user"= user;             ViewData.Model = user;            return View("Html2");        }
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MVCExpression.Models.UserInfo>" %>
<%:Model.Info %>
创建视图时,就创建强类型视图,选择类型
MVCExpression.Models.UserInfo
在强类型编程中使用TextBoxFor比TextBox区别在于强类型,不会错,两个都能从后台获取值
<%:Html.TextBox("Name"%>

<%:Html.TextBoxFor(u => u.Name%>
<%:%> 相当于<%= Html.Encode()%>

Html.Raw():也可以把字符串原封不动的输出
到页面上,避免被编码化。


<%:Html.Raw("<p>sldjfl<p>"%><%:new HtmlString("<p>sldjfl<p>"%><%:new MvcHtmlString("<p>sldjfl<p>"%>


5.给Html写扩展方法

扩展方法的三要素:静态类、静态方法、this关键字,扩展方法就是如此,this 要扩展的类,后面跟参数

namespace System.Web.Mvc{    public static class MyHtmlHelperExt    {        public static HtmlString MyLabel(this HtmlHelper helperstring text)        {            return new HtmlString(string.Format("<span>{0}</span>"text));        }    }}

0 0
原创粉丝点击