第4章 MVC进阶——ASP.NET MVC企业级实战

4.1 View详解

4.1.1 View和Action之间数据传递的方式
  • 弱类型ViewData[""]
  • 动态型ViewBag //dynamic
  • 动态类型Model
  • 临时存储TempData[""]
  • 后台:return View(Data); //存入ViewData.Model
  • 前台:Model //其实就是WebViewPage.Medel
    示例:
    首先添加一个model类:
    public class User
    {
        public string Name { get; set; }
    }

在controller为变量赋值:

 public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewData["One"] = "This is ViewData Test";
            ViewBag.Two = "This is ViewBag Test";
            var _user = new User { Name = "This is Model Test"};
            TempData["Four"] = "This is TempData Test";
            return View(_user); //等于ViewData.Model = _user;
        }
    }

其次在View里面应用在controller的变量:

@Model FirstTest.Models.User
<br/>

@{
    ViewBag.Title = "Index";
}

@ViewData["One"]<br/>
@ViewBag.Two<br/>
@Model.Name<br/>
@TempData["Four"]
<h2>Index</h2>
第4章 MVC进阶——ASP.NET MVC企业级实战
4.1.2 TempData、ViewData和ViewBag的区别
  • ViewData是字典型的(Dictionary);
  • ViewBag不再是字典的键值对结构,而是dynamic型,会在程序运行的时候动态解析;
  • ViewData为object型,而ViewBag为dynamic型。dynamic型与object型的区别在使用时它会自动根据数据类型转换。

4.2 Razor视图引擎

示例:


@*1. 使用字符串描述输出*@
@{ 
    string strHtml = "Hi Girl~";
    @strHtml;
    <br />
}

@*2.使用HTMLHelper输出*@
@{
    @Html.Raw("use HTMLHelper to output");
    <br />
}

@*3.使用HtmlString类输出*@
@{ 
    HtmlString htm = new HtmlString("use HtmlString");
    @htm;
    <br />
}

@*4.使用MvcHtmlString输出*@
@{ 
    var str = MvcHtmlString.Create("use mvchtmlstring");
    @str;
    <br/>
}
第4章 MVC进阶——ASP.NET MVC企业级实战

4.3 Controller

Controller 主要负责相应用户的输入,主要关注的是应用程序流、输入数据的处理以及对相关视图(View)输出数据的提供。

4.3.1 Action 方法参数与返回值

1.通过Request.Form["name"]逐个获取表单提交的数据
首先在Models下添加ASO.NET实体数据模型,这里使用DB First
添加Action方法UpdateCustomerInfo

 public ActionResult UpdateCustomerInfo()
        {
            return View();
        }

        [HttpPost]
        public string UpdateCustomerInfo(FormCollection form)
        {
            return Request.Form["ContactName"];
        }

添加UpdateCustomerInfo视图

@model FristTest.Models.Customers
@{
    ViewBag.Title = "UpdateCustomerInfo";
}

@using (Html.BeginForm())
{
    @Html.TextBoxFor(x => x.ContactName)
    <input type="submit" value="修改" />
}

微信公众号:


第4章 MVC进阶——ASP.NET MVC企业级实战
公众号.png