Razor是ASP.NET网页和ASP.NET MVC使用的模板语言(自版本3开始)。它在HTML生成之上添加了一层抽象。它支持HTML标记和C#或VB代码之间的无缝转换。标记和代码之间的转换由“@”符号表示。
有 2 次浏览 指数 验证验证OTP 两者都有相同的controller,IndexController实现了Controller,即IndexController:Controller 预期流程:登陆索引视图,然后
.NET 8 Blazor Web 应用程序与使用 JWT 身份验证的 Web API AuthorizationHandlerContext 返回 null
我有两个 .NET 8 项目,一个 ASP.NET Core 8 Web API 和 Blazor Web 应用程序,交互式渲染模式设置为服务器。 Web API 处理身份验证并提供 JWT 令牌。注册...
我正在尝试通过剃刀页面上的 Ajax 调用提交表单数据。但是,我在创建要放入 Ajax 调用的 FormData 时遇到问题。 这是表格 我正在尝试通过 Razor 页面上的 Ajax 调用提交表单数据。但是,我在创建要放入 Ajax 调用的 FormData 时遇到问题。 这是表格 <form id="dropdownForm" asp-action="Index" asp-controller="Statements" method="post"> <input type="text" id="startInput" name="start" hidden /> <input type="text" id="endInput" name="end" hidden /> <div class="form-group"> <p>Choose an account</p> <select id="AccountDropdown" select class="selectpicker" data-size="10" data-live-search="true" asp-for="@Model.SelectedAccounts" multiple data-actions-box="true" data-style="btn-white" style="right:0; left:auto;"> @foreach (var item in Model.AccountDropdown) { if (Model.SelectedAccounts.Any(e => e.AccountValue == item.AccountValue)) { <option value="@item.AccountValue" selected>@item.AccountName (@item.AccountCode)</option> } else { <option value="@item.AccountValue">@item.AccountName (@item.AccountCode)</option> } } </select> </div> <div class="form-group"> <button id="accountSubmit" value="Update Selection" class="btn btn-primary">Update Selection</button> </div> 我在页面上有一个单独的按钮,我想将此表单提交到不同的控制器操作。 我所做的是。 let myForm = document.getElementById('dropdownForm'); let formData = new FormData(myForm); $.ajax({ async: false, cache: false, //contentType: 'multipart/form-data', contentType: false, type: 'POST', data : formData, url: '/Statements/GetStatementData', success: function (data) { tableData = data.StatementsList; }, error: function (e) { Console.log(e); } }); 变量 myForm 被正确拉取,并且它包含我需要的所有值和信息。但是 FormData 对象是空的,并且在内部 Ajax 调用上失败。 这是我声明后对象的屏幕截图formData 如有任何帮助,我们将不胜感激。 从 let formData = new FormData(myForm); 更改为 myForm.serialize() 您还应该输入 AccountDropdown 的名称。 注意:表单中输入标签的名称必须与模型中的属性名称相同,才能正确进行模型绑定。 let myForm = $('#dropdownForm'); //let formData = new FormData(myForm); $.ajax({ async: false, cache: false, //contentType: 'multipart/form-data', //contentType: false, type: 'POST', data : myForm.serialize(), url: '/Statements/GetStatementData', success: function (data) { tableData = data.StatementsList; }, error: function (e) { Console.log(e); } }); 更新: let myForm = $('#dropdownForm'); let data = myForm.serialize(); console.log(data); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <form id="dropdownForm" asp-action="Index" asp-controller="Statements" method="post"> <input type="text" id="startInput" value="1" name="start" hidden /> <input type="text" id="endInput" value="2" name="end" hidden /> <select id="AccountDropdown" name="account"> <option value="A1">A1</option> </select> </form> 我为serialize()做了一个演示 $.ajax({ 网址: '/创建', 类型:'发布', 标题:{ 'RequestVerificationToken': $('input[name="__RequestVerificationToken"]').val() }, 数据:JSON.stringify(formData), 内容类型:'应用程序/json', 数据类型:'json', });
我在将 svg 文本元素绑定到 razor 时遇到问题。 如果我这样做 世界你好 它工作正常 - 但如果我这样做: &l...
我正在使用 ASP.NET Core 8.0 MVC 构建一个应用程序。 在我看来,在这里显示的代码中,法语重音字符显示得不好(参见第一个屏幕截图): @型号列表 我正在使用 ASP.NET Core 8.0 MVC 构建一个应用程序。 在此处显示的代码中,在我看来,法语重音字符显示得不好(参见第一个屏幕截图): @model List<ViewListTable> <head> <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" /> <script type="text/javascript"> function f() { var myArray = []; @foreach (var d in Model) { @:myArray.push("@d.Name"); @:console.log("@d.Name"); } var cptData = myArray.length; var tableau = document.getElementById('tableau'); var tbl = document.createElement("table"); var x = 0; for (var i = 0; i < cptData / 3; i++) { var tr = document.createElement('tr'); for (j = 0; j < 3; j++) { var td = document.createElement('td'); if (x < cptData) { var a = document.createElement('a'); var el_span = document.createElement('span'); var linkText = document.createTextNode(myArray[x]); var tab = myArray[x]; el_span.setAttribute('style', 'color: #07C'); a.setAttribute('href', "'" + tab + "'"); a.setAttribute('class', 'button'); a.title = "Éditer les données de la table:"; a.appendChild(linkText); el_span.appendChild(a); td.appendChild(el_span); }; x += 1; tr.appendChild(td) }; tbl.appendChild(tr); } tableau.appendChild(tbl); } </script> </head> <body> <div id="tableau"></div> <script> f(); </script> </body> 但是标记元字符集 =“utf-8”是在我的 _layout 文件中设置的。我已经在同一个文件中测试了第二个代码,相反,它在同一个文件中工作正常(参见第二个屏幕截图): @model List<ViewListTable> <!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" /> </head> <body> <div class="container"> <div class="col-6"> Liste des tables </div> <table class="table table-bordered table-striped"> <thead> <tr> <th class="col-6"> Nom des tables de la BD </th> </tr> </thead> <tbody> @foreach (var obj in Model) { <tr> <td>@obj.Name</td> </tr> } </tbody> </table> </div> </body> </html> 在 JavaScript 代码中插入法语重音字符时,正确处理引号和其他特殊字符非常重要,需要对它们进行转义以确保字符串的正确性和安全性。 所以,我通过更改此代码完成了转义过程 @:myArray.push("@d.Name"); @:console.log("@d.Name"); 到 @:myArray.push("@Html.Raw(d.Name.Replace("\"", "\\\"").Replace("'", "\\'"))"); @:console.log("@Html.Raw(d.Name.Replace("\"", "\\\"").Replace("'", "\\'"))"); 然后就成功了,测试结果变成了: 到
ASP.NET Web 应用程序表单提交时出现空白页面且验证失败
在我的网络应用程序上提交表单后,我被引导到一个空白页面。正确输入详细信息后,考勤卡就会正确更新。同样,如果我取消表格,我就是
在foreach中使用asp-validation-for,无法识别字段并给出错误
我正在为我的 ASP.NET 项目使用 Razor 页面。克隆存储库后,它开始出现一个特定的构建错误: 错误(活动) CS1061 列表< CaseFileStatus > 不包含定义...
我正在尝试将我的 MVC 转换为 Razor 页面。 这是我的 MVC 示例代码 public ActionResult 注册(会员会员) { if (ModelState.IsValid) { ...
Razor函数:@helper和@functions有什么区别
关于asp.net mvc中razor功能的几个问题。 1)看下面的代码 @helper WelcomeMessage(字符串用户名) { 欢迎,@用户名。 } 然后你像这样调用它:@
我对泛型不太熟悉,我不明白为什么以下内容不起作用。 我有一个 IEnumerable 的扩展,称为 Grid,它看起来像这样 公共静态类
如何将 IEnumerable<SelectListItem> 集合传递到 MVC 部分视图,每个请求仅进行一次数据库查找
假设给定一个 html 表的部分视图,每个表行都存在一个嵌套的部分视图,如下所示: 外部局部视图 <... 假设给定 html 表的部分视图,每个表行都存在一个嵌套的部分视图,如下所示: 外部局部视图 <table> <thead> <tr> <th>Item Name</th> <th>Cost</th> <th>Category</th> </tr> </thead> <tbody> @for (int i = 0; i < Model.PurchaseItems.Count; i++) { @Html.Partial("_PurchaseItemsDetail", Model.PurchaseItems[i]) } </tbody> </table> 内部部分视图,注意:外部视图可以在单个请求中多次使用此部分视图,但是如果使用 AJAX 请求,也可以仅使用一次 <tr id="@Model.ID"> <td>@Html.TextBoxFor(x => x.ItemName)</td> <td>@Html.TextBoxFor(x => x.Cost)</td> <td> @Html.DropDownListFor(x => x.Category, CATEGORY_COLLECTION) </td> </tr> 问题:考虑到这个旨在灵活的内部视图,查询数据库并临时存储要与下拉列表一起使用的IEnumerable<SelectListItem>集合的最佳方法是什么? 我能想到的方法: 方法一:这看起来是最简单的,但是感觉违反了MVC原则。 在内部部分视图中求值并存储在 ViewData 集合中,这样数据库只被命中一次: @{ if (ViewData["Categories"] == null) { ViewData["Categories"] = API.GetCategories(); } } 然后在视图中 <td> @Html.DropDownListFor(x => x.Category, ViewData["Categories"]) </td> 这很好,因为视图会自行决定如何填充其包含的下拉列表。它不依赖于视图模型。 方法2:与上面相同,只是在返回内部局部视图的各种控制器方法中设置ViewData。 这种方式似乎更符合 MVC 最佳实践,但维护起来似乎更加乏味和混乱,因为每个控制器方法都需要正确设置 ViewData,并创建必要的视图模型。 方法三:这个看起来最费工,最难维护,但是最符合MVC原则。完全避免使用 ViewData,而是将集合的引用与部分视图模型中的其他属性一起存储。控制器负责创建集合,然后在每个表行的视图模型中存储引用。 public class PurchaseItemModel { public string ItemName { get; set; } public decimal Cost { get; set; } public string Category { get; set; } // add this public IEnumerable<SelectListItem> Categories { get; set; } } 在每个提供内部视图的控制器中 // if dealing with multiple rows (GET) IEnumerable<SelectListItem> collection = API.GetPurchaseItemList(); foreach (PurchaseItemModel pim in OuterModel.PurchaseItemModels) { pim.Categories = collection; } 或 // if dealing with a single row (Ajax) purchaseItem.Categories = API.GetPurchaseItemList(); 然后在视图中 <td> @Html.DropDownListFor(x => x.Category, x.Categories) </td> 也许这只是主观问题,但似乎对于这种情况有一个最佳实践。 有什么想法吗? 继续创建一个视图模型类,例如: public class PurchaseItemViewModel { public string ItemName { get; set; } public decimal Cost { get; set; } public string Category { get; set; } public IEnumerable<Category> Categories { get; set; } public PurchaseItemViewModel(PurchaseItemModel item, List<Category> categories) { // initialize item and categories } } 在控制器中获取所有项目,然后获取所有类别,然后将 Purchase 项目设置到视图模型并设置类别。因此,您将把视图模型类传递给视图。 方法 3 是可行的方法 - 但不要让它变得如此复杂。 有两个属性 - PurchaseItem 属性和 Categories 属性。 然后实例化每次迭代并设置属性。 松散示例: <table> <thead> <tr> <th>Item Name</th> <th>Cost</th> <th>Category</th> </tr> </thead> <tbody> @for (int i = 0; i < Model.PurchaseItems.Count; i++) { var vm = new PurchaseItemsDetailViewModel() { PurchaseItem = Model.PurchaseItems[i], Categories = Model.CategoriesSelectList // or whatever holds the categories select list }; @Html.Partial("_PurchaseItemsDetail", vm) } </tbody> </table> <tr id="@Model.PurchaseItem.ID"> <td>@Html.TextBoxFor(x => x.PurchaseItem.ItemName)</td> <td>@Html.TextBoxFor(x => x.PurchaseItem.Cost)</td> <td> @Html.DropDownListFor(x => x.PurchaseItem.Category, x.Categories) </td> </tr>
如何向@await Component.InvokeAsync(typeof(TopMenuViewComponent))传递参数?
我正在使用视图,而不是控制器。如何将参数传递给 @await Component.InvokeAsync(typeof(TopMenuViewComponent)) 然后在组件 TopMenuViewComponent (Default.cshtml) 中获取...
asp.net mvc - 在 Razor 中提供备用行样式的最简单方法
给出以下 Razor 代码: @foreach(模型中的职业职业) { @专业.姓名 @教授...
我在尝试做某事时遇到了困难,我希望有人可以帮助我理解我做错了什么。情况是这样的。我有一个带有表单的部分视图,当我提交该表单时...
如果浏览器使用页面加载时保存的凭据自动填充表单字段,如何启用提交按钮?
我正在开发一个登录表单,只有在用户名和密码字段都填写时才应启用提交按钮。当用户手动输入
您可以像这样密封一个类定义的组件: 公共密封类 MyComponent { protected override void BuildRenderTree(RenderTreeBuilder 构建器) { // 一些 RenderTreeBuilder 代码...
MVC3 razor Webgrid 分页和排序超过 2000 条记录
我正在使用类似于这里提到的网络网格 @{ var grid = new WebGrid(canPage: true, rowsPerPage: ThisController.PageSize, canSort: true, ajaxUpdateContainerId: "grid"); 网格.绑定(
在 Razor 视图中为 IFormFile 更改 <input> 中的“选择文件”和“未选择文件”文本
我有一个 ASP.NET Core 5 Web 应用程序,具有上传文件的操作。 这是模型: 公共类UploadViewModel { 公共 IFormFile FileToUpload { 获取;放; } } 这是视图部分 我有一个 ASP.NET Core 5 Web 应用程序,其中包含上传文件的操作。 这是模型: public class UploadViewModel { public IFormFile FileToUpload { get; set; } } 这是视图部分 <div class="form-group"> <label class="control-label">@Localizer["FileToUpload"]</label> <input asp-for="FileToUpload" class="form-control" /> <span asp-validation-for="FileToUpload" class="text-danger"></span> </div> 在网络浏览器中,我可以在文本框中看到“选择文件”按钮,其中包含“未选择文件”文本: 此应用程序已本地化,因此我需要根据所选语言更改这些文本,可以吗? 也许仅使用 c# 是不可能的。但你可以只使用 Css 和 Javascript 来做到这一点。 <div class="form-group"> <input type='file' id="aa" onchange="pressed()" asp-for="FileToUpload" class="form-control" /> <label id="fileLabel" class="control-label">@Localizer["FileToUpload"]</label> ... </div> Javascript window.pressed = function(){ var a = document.getElementById('aa'); if(a.value == "") { fileLabel.innerHTML = "Choose file"; } else { var theSplit = a.value.split('\\'); fileLabel.innerHTML = theSplit[theSplit.length-1]; } }; CSS input[type=file]{ width:90px; color:transparent; } 输出 或者你可以使用纯CSS来做到这一点,如下所示:- <input type='file' id="foo" asp-for="FileToUpload" class="form-control" /> CSS input[type=file]{ color:transparent; } input[type=file]:after { color: #000; content:"This Works Man!!"; } 输出:- 我想在 YMCA 获得一个职位空缺,因为我提供的上述信息是真实的,所以请您考虑一下这个请求
DNN Razor 主机模块 - 如何使用查询字符串参数作为变量来获取与特定 UserID 相关的数据
我需要语法帮助来编写以下代码,以便在 dnn 站点版本 9.13 上的 Host Razor 模块中使用。 我需要使用查询字符串参数作为变量来获取与特定 UserID 相关的数据。 @
我尝试了解如何在我的网络中创建图表。为此,我想创建一个可以通过用户鼠标在屏幕上移动的形状。 我成功绘制的只是一个带有文本的形状...