有很多概念可以让您了解。让我们从两个基本选择开始。使用简单的回发或 JavaScript 和 Ajax 更新日期?
好的,让我们开始第一个,一个简单的创建过程。
您需要更新数据库表。您可以从数据库创建实体框架模型。您的应用程序将与此交互更新表。这是 MVC 中的“M”或模型。您还需要创建一个控制器(MVC 中的“C”)和一个视图(MVC 中的“V”)。
控制器通常包含两种执行工作的方法。当用户导航到网页时,他们会获取初始数据。所有这一切都是返回带有空模型的视图,因此任何编辑控件都处于默认状态 - 例如空文本框
[HttpGet]
public ActionResult Create()
{
return View();
}
当用户保存视图时,会调用另一个方法(同名)。请注意,这是 POST 方法,因此 FORM 中的所有数据都被打包到 ModelState 中。 MVC 将为您将模型绑定到方法的参数中——您甚至可以说出要包含哪些参数。这里的版本使用 Async。
您视图中的 FORM 也应该有一个防伪令牌,这是 MVC 系统返回和使用的第一个(隐藏)字段 - 您通常看不到它。
假设数据是有效的,它被保存到数据库中(我通常有一个底层的业务模型来做这个工作来保持控制器的干净)。如果模型无效(例如缺少字段),则现有模型将与任何错误消息一起传递回视图以供用户再次使用。查看 Data-Annotations 以了解如何定义有效值范围。
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create([Bind(Include = "YourName")] MyData model)
{
if (ModelState.IsValid)
{
await _bs.MyData_UpdateAsync(model);
return RedirectToAction("Index");
}
// return with any errors
return View(model);
}
最后,您需要一个动态生成 HTML 并将其传递给客户端浏览器的视图
@model MyApp.Models.MyData
@{
ViewBag.Title = "Create Something";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="container w-50">
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.YourName, htmlAttributes: new { @class = "control-label" })
@Html.EditorFor(model => model.YourName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.YourName, "", new { @class = "text-danger" })
</div>
<div class="d-flex">
<div class="ml-auto">
<input type="submit" value="Create" class="btn btn-primary btn-sm btn-default" />
</div>
</div>
</div>
}
</div>