欢迎来到老周的水文演播中心。
咱们都知道,MVC的控制器也可以用来实现 Web API 的(它们原本就是一个玩意儿),区别嘛也就是一个有 View 而另一个没有 View。于是,在依赖注入的服务容器中,我们可以这样添加功能:
var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); //无 View builder.Services.AddControllersWithViews(); //有 View
如果你的控制器有用到视图的时候,就调用第二个的方法。它们的核心服务一样。
-----------------------------------------------------------------------------
当客户端历尽千辛万苦,跨越数不清的跃点,把请求提交到服务器后,MVC 运行时会分析请求的内容,从中还原出我们代码所需要的对象,通常是 Action 方法的参数。
要把客户端提交的数据填充到咱们所需要的对象中,得用到模型绑定。
我们先别管这概念抽象不抽象,举个例子,假设某控制器是有视图的,返回了一个页面,页面上有 form 元素(表单),可以让用户填写个人信息,然后提交(POST)给服务器,完成报名。
<form asp-action="PostData" asp-controller="Main"> <div class="line"> <div class="lhd"> <label for="name">姓名:label> div> <div class="rctl"> <input type="text" name="name" id="name" /> div> div> <div class="line"> <div class="lhd"> <label for="age">年龄:label> div> <div class="rctl"> <input type="number" name="age" id="age" max="120" min="10" /> div> div> <div class="line"> <div class="lhd"> <label for="phone">手机号码:label> div> <div class="rctl"> <input type="tel" name="phone" id="phone" /> div> div> <div class="line"> <div class="lhd"> <label for="desc">简介:label> div> <div class="rctl"> <input name="description" id ="desc" /> div> div> <div class="line"> <button type="submit">提交button> div> form>
假设表示”会员“信息的是个叫 Member 的类。
public class Member { public int ID { get; set; } public string? Name { get; set; } public int Age { get; set; } public string? Phone { get; set; } public string? Description { get; set; } }
你如果注意看的话,你会发现:上面类中属性名与 HTML 页上