您的位置:首页 > 编程语言 > ASP

ASP.NET MVC(2)

2015-10-10 14:26 716 查看
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.QueryStringRequest:包含以上两种方式(优先获取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 helper, string text)
{
return new HtmlString(string.Format("<span>{0}</span>", text));
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: