ASP.NET MVC(2)

本文介绍ASP.NET MVC中数据从前台到后台的交互方式,包括使用ViewData、ViewBag进行数据传递,以及如何通过FormCollection获取表单数据。此外,深入探讨HtmlHelper的使用技巧,如简化URL生成、强类型标签使用及自定义扩展方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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));
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值