【发布时间】:2019-01-19 14:05:35
【问题描述】:
所以我这里有一个看起来有点像这样的模型
public class UserAccount : IdentityUser
{
public string Username{ get; set; }
}
我也有一个看起来像这样的视图
@model Myproject.ViewModel.TheViewModel
@{
ViewData["Title"] = "Welcome";
}
<div id="theContainer"> <div/>
在该视图中,我想使用 JavaScript 生成一个段落(不是内联,我想使用单独的文件) 所以我创建了一个 js 文件,然后我创建了一个像这样工作的函数。
var container = document.getElementById("theContainer");
var newParagraph= document.createElement("p");
//I could add attributes by doing newParagraph.addAttribute(..)
// but you will read why that is an issue soon
container.appendChild(newParagraph);
如您所见,这将为文档中 ID 为 theContainer 的元素生成一个空段落元素。
这就是问题发生的地方。
我为我的 ASP.NET 项目设置了一个数据库,其中有几个条目。
我想获取这些条目的Username 属性,然后动态生成<p/> 元素。问题是我不知道如何从数据库中获取数据并将其与我的 JavaScript 一起使用。
所以我的问题是,如何从我的数据库中获取数据并使用它来生成元素?
【问题讨论】:
-
很有趣,你的措辞本身就是答案。有一个Fetch API(它缺少 IE 支持,因此您可能还会考虑使用另一个库,它使用 XmlHttpRequest (AJAX))。然后,您只需要从返回 JSON 的控制器中公开一个操作方法。您可以在 ASP.NET MVC 中执行此操作,但如果您打算做很多,您也可以查看 ASP.NET Web API。您也可以将数据添加到模型中,在视图中将该模型呈现到标记中的隐藏字段,然后使用 JS 从隐藏字段中检索值。
-
我必须为 Web API 创建一个新项目吗?好像有点过分了吧?
-
不,您可以在与 MVC 项目相同的项目中托管 Web API。 Web API 只是您安装的 NuGet 包。然后您添加一些配置(以启用到您的 Web API 控制器等的路由),它们将愉快地共存。当然,如果你这样做了,你可能会在某个时候发现,完全不使用 MVC 会更好,而是使用一些前端框架(例如 Vue、React 或 Angular)然后与你的 Web API 对话.但是,如果您愿意,您可以通过将 Web API 添加到现有站点中来涉足其中。
-
所以 ASP.NET Web API 和 React、Vue 或 Angular.. 嗯.. 可以工作!
-
当然可以!许多,许多网站都在使用这样的架构。您可以考虑构建站点的“现代”方式。如果你想展望未来(这总是模糊的),那么Blazor 是我最好的猜测。当然,它是实验性的,谁知道它是否会获得市场份额并发展健康生态系统。但它的优点是不需要 JavaScript,并且您可以使用出色的 .NET 语言(例如 C#)进行编码,并且您可以在客户端和服务器端重用您的代码。
标签: javascript c# razor asp.net-core asp.net-core-mvc