Razor是ASP.NET网页和ASP.NET MVC使用的模板语言(自版本3开始)。它在HTML生成之上添加了一层抽象。它支持HTML标记和C#或VB代码之间的无缝转换。标记和代码之间的转换由“@”符号表示。
通常,当设置带有实时验证的“MudForm”时,当有东西磨损时,来自验证器类的指导验证消息会自动弹出在表单字段下方....
我的目的是制作一个用于修改地图的页面,在其中我获取每个元素的位置(它们是表格的图像)并制作实时编辑器。 然而,当尝试从一张桌子上移动一张桌子时
在 Visual Studio 解决方案资源管理器中的 Razor 项目中复制并粘贴文件
我希望能够复制并粘贴我的 .razor 文件,然后重命名它们,而不是通过菜单添加 .razor 组件。 有时我可以复制和粘贴文件,IDE 会创建一个副本
我尝试将日志记录放在cshtml.cs和cshtml文件之间。 Index.cshtml 文件 @页 @model索引模型 @{ ViewData["标题"] = "主页"; } 我尝试将日志记录放在 cshtml.cs 和 cshtml 文件之间。 Index.cshtml 文件 @page @model IndexModel @{ ViewData["Title"] = "Home page"; } <div class="text-center"> <h1 class="display-4">Welcome</h1> <p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p> </div> <form asp-page-handler="Logging" method="post"> <input type="hidden" asp-for="logging" /> <input type="text" asp-for="Logging_String" /> <button class="btn btn-default">Logging</button> </form> <div> <p>@Model.logging</p> </div> 索引.cshtml.cs using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using static System.Runtime.InteropServices.JavaScript.JSType; namespace Razor1.Pages { public class IndexModel : PageModel { private readonly ILogger<IndexModel> _logger; public IndexModel(ILogger<IndexModel> logger) { _logger = logger; } [BindProperty(SupportsGet = true)] public string Logging_String { get; set; } public List<string> Message { get; set; } public string logging { get; set; } public IActionResult OnPostLogging() { //Message.Add($"Logging: {Logging_String}"); logging += Logging_String; if (!ModelState.IsValid) { return Page(); } return Page(); } //beginning public IActionResult OnGet() { logging += "Logging Test Start"; if (!ModelState.IsValid) { return Page(); } return Page(); } } } 因此,在这段代码中,如果我在框中放入一些字符串并单击按钮,它将转到 OnPostLogging() 并将其添加到字符串中。 但是现在,我只看到我的日志字符串保持重置并且只显示最新的。 1。如何保留字符串的值以便我可以将其全部打印出来? (例如,如果我继续单击框中带有“abcd”的按钮,我的日志打印应该是 记录测试开始 abcd abcd abcd abcd abcd abcd ) 2。我想将此日志字符串放入列表中。如何在文本区域打印List? 我对 ASP.NET 很陌生 如果你们能详细描述一下那就太好了。 祝你有美好的一天:) 如何保留字符串的值以便我可以将其全部打印出来? 我想将此日志字符串放入列表中。如何在文本区域打印列表? 您可以尝试这个工作示例。它将日志保存为由 ; 分割的长字符串。然后你可以通过分割检索到List<string>。使用默认输入<input type="hidden" name="logging" value="@Model.logging" />以避免绑定问题。 Index.cshtml.cs: public class IndexModel : PageModel { [BindProperty] public string Logging_String { get; set; } public List<string> Message { get; set; } [BindProperty] public string logging { get; set; } public IActionResult OnPostLogging() { logging += ";"+Logging_String ; List<string> splits = logging.Split(';').ToList(); Message = splits; if (!ModelState.IsValid) { return Page(); } return Page(); } // beginning public IActionResult OnGet() { logging += "Logging Test Start"; List<string> splits = logging.Split(';').ToList(); Message = splits; if (!ModelState.IsValid) { return Page(); } return Page(); } } Index.cshtml: @page @model IndexModel <form asp-page-handler="Logging" method="post"> <input type="hidden" name="logging" value="@Model.logging" /> <input type="text" asp-for="Logging_String" /> <button class="btn btn-default">Logging</button> </form> <div> @if (Model.Message != null) { foreach (var message in Model.Message) { <p>@message</p> } } </div> 测试结果: 请注意,隐藏字段是保存值的临时方法。会话存储可能是保存值的更好方法。
ASP.NET MVC @Html.DropdownList对于错误的选择值
我知道有很多关于这个的问题(这个这个和这个)是我读过的一些问题,但我没有发现任何有帮助的东西: 在我看来我有 @Html.DropDownListFor(m => m.
我一直在寻找使用 Blazor 从数据库中删除行的方法。我一直在尝试,但遇到了需要长代码的问题,我想让我的项目保持简单。 我的代码: @pa...
如何让这两行在 Razor synatx 中具有相同的上下文?
所以我的视图的开头是 @foreach(ViewBag.GroupedBySec 中的 var G) { 所以我的观点的开始是@foreach ( var G in ViewBag.GroupedBySec ) { <div class="row"> <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> <table class="table table-striped assessment-table"> <tbody> <tr> <td class="black-n-white" colspan="4">@G.Key</td> </tr> <tr> <td>Section</td><td>Component</td><td>Completeness Level (0-100%)</td><td>Readines</td> </tr> @var GroupedBySubsection = G.GroupBy(x => x.SubsectionTitle); @foreach ( var g in GroupedBySubsection ) { @foreach ( var qa in g ) { 我在 上遇到错误 @var GroupedBySubsection = G.GroupBy(x => x.SubsectionTitle); @foreach ( var g in GroupedBySubsection ) 线条说 名称“var”在当前上下文中不存在 和 名称“GroupedBySection”在当前上下文中不存在 知道我做错了什么吗? 或者,对于如何获取具有整个分组和子分组的 C# 对象有什么建议,这样我就不必在视图中写所有这些废话了? 我的这个页面的控制器方法就像 [HttpGet] public ActionResult Peek ( Guid pid ) { ViewBag.PartnerId = pid; List<AnswerInfo> AllAnswers = this._Db.GetAnswersByPartner(pid); ViewBag.GroupedBySec = AllAnswers.GroupBy(A => A.SectionTitle); return View(); } 发生错误是因为您缺少 var 语句周围的大括号。应该是: @{ var GroupedBySubsection = G.GroupBy(x => x.SubsectionTitle); } 这将抛出一个不同的错误,因为您在 ViewBag 中引用了一个项目,即 dynamic,因此您需要按如下方式进行转换 @{ var GroupedBySubsection = ((IEnumerable<yourModel>)G).GroupBy(x => x.SubsectionTitle); } 让你的视野更加难看。 如何获得一个具有整个分组和子分组的 C# 对象,这样我就不必在视图中编写所有这些废话? 使用视图模型。根据您之前的一些问题,您有一个数据模型(缩写)是: public class Answer { public string Section { get; set; } public string SubSection { get; set; } public int QuestionID { get; set; } public string QuestionText { get; set; } .... } 并且您希望在视图中按 Section 然后按 SubSection 将其分组。您的视图模型将是: public class SectionVM { public string Title{ get; set; } public List<SubSectionVM> SubSections { get; set; } } public class SubSectionVM { public string Title { get; set; } public List<QuestionVM> Questions { get; set; } } public class QuestionVM { public int QuestionID { get; set; } public string QuestionText { get; set; } .... } 您的控制器代码将是: var answers = db.Answers..... // your previous query List<SectionVM> model = answers.GroupBy(x => x.Section).Select(x => new SectionVM { Title = x.Key, SubSections = x.GroupBy(y => y.SubSection).Select(y => new SubSectionVM { Title = y.Key, Questions = y.Select(z => new QuestionVM { QuestionID = z.QuestionID, QuestionText = z.QuestionText, .... }).ToList() }).ToList() }).ToList(); return View(model); 并且在视图中 @model List<SectionVM> @foreach(var section in Model) { <h2>@section.Title</h2> foreach(var subSection in section.SubSections) { <h3>@subSection.Title</h3> foreach(var question in subSection.Questions) { <p>@question.QuestionText</p> .... } } } 旁注:我已经创建了集合属性List<T>,假设您可能还想生成一个用于编辑问题/答案的表单,为此,您将需要一个for循环,该循环需要集合来实现IList 。或者,您可以为每种视图模型类型节省 .ToList(), keep them as IEnumerableand use a customEditorTemplate` 的额外开销。 有关编辑视图的外观示例(使用 for 循环选项),请参阅 这个答案。
如何删除 ASP.NET Core TagHelper 中生成的属性?
以下输入标签助手: 呈现为: 以下输入标签助手: <input asp-for="Query.Skip" type="hidden" name="Skip" /> 呈现为: <input type="hidden" name="Skip" id="Query.Skip" value="0" /> 如何使其不渲染 id 属性?我不需要 id 属性。我已经尝试过id="@null",但它仍然呈现。 这是一个简单的覆盖标记帮助程序,它删除了 id 属性。 添加触发覆盖标记帮助程序的自定义属性。在下面的示例中,属性 noId 触发覆盖。 在覆盖标记帮助程序中,让 Razor 使用 base.Process(context, output); 处理默认输出。 从输出中删除 id 和自定义 noId 属性。最终结果将是: <input type="hidden" name="Skip" id="Query.Skip" value="0" /> 剃须刀视图 @page @model WebApplication1.Pages.RemoveIdTagHelperModel @using WebApplication1.Helpers @addTagHelper WebApplication1.Helpers.NoIdTagHelperTagHelper, WebApplication1 @{ } <input noId asp-for="Query.Skip" type="hidden" name="Skip" /> NoIdTagHelper.cs using Microsoft.AspNetCore.Razor.TagHelpers; namespace WebApplication1.Helpers { [HtmlTargetElement(Attributes = "noId")] public class NoIdTagHelperTagHelper : TagHelper { public override void Process(TagHelperContext context, TagHelperOutput output) { base.Process(context, output); output.Attributes.Remove(output.Attributes.First(t => t.Name == "noId")); output.Attributes.Remove(output.Attributes.First(t => t.Name == "id")); } } }
目标是让它将 .zoom-container div 内的元素拖到此页面上,以便在单击按钮后能够修改每个元素的位置。 我们还没有...
我一直在使用 blazor,遇到了一个问题,找不到任何解决方案,我一直在尝试将文本添加到输入字段中,但它没有更新 @页 ”/” 表格 我一直在使用 blazor,遇到了一个问题,找不到任何解决方案,我一直在尝试将文本添加到输入字段中,但它没有更新 @page "/" <PageTitle>Form</PageTitle> <h1 style="text-align:center">Form & Validation</h1> <EditForm Model="person" OnValidSubmit="FormSubmit" FormName="Form"> <DataAnnotationsValidator /> <label>Name :</label> <InputText id="name" @bind-Value="person.Name" /> <br /> <br /> <button type="submit" class="btn btn-primary">submit</button> </EditForm> <p>New Name : @person.Name</p> @code { Person person = new Person(); string displaySuccess, styleColor; private void FormSubmit() { displaySuccess = "Worked!"; styleColor = "Green"; } class Person { public string? Name { get; set; } } } 我试过了 { if (person != null) { displaySuccess = "Worked!"; styleColor = "Green"; } else { displaySuccess = "Wrong!"; styleColor = "red"; } } 然后总是出现“成功了!”即使它为空,发生了什么? 我尝试在谷歌上查找,但没有找到任何东西,不知道为什么我的值没有更新 因此,在阅读和深入研究后,进一步找到了一种更有效、更有效的方法,就是这样 @page "/" @inject ILogger<Home> Logger <EditForm Model="Model" OnSubmit="Submit" FormName="Starship1"> <div> <label> Identifier: <InputText @bind-Value="Model!.Id" /> </label> </div> <div> <button type="submit">Submit</button> </div> </EditForm> <br /> <br /> <p>Id : @sarshipId</p> @code { [SupplyParameterFromForm] public Starship? Model { get; set; } string? sarshipId { get; set; } protected override void OnInitialized() => Model ??= new(); private void Submit() { sarshipId = Model!.Id; } public class Starship { public string? Id { get; set; } } } 而不是Person person = new Person(); 我可以做protected override void OnInitialized() => Model ??= new(); 这解决了我的问题:D
我已经对这两天感到困惑了。 我的总计字段模型为十进制 [显示(名称=“Harga”)] [范围(0, 999999999999, ErrorMessage = "Harga tidak boleh kurang dari 0&
这是我的代码: 函数发送字段数据(){ var email = document.getElementById('EmailComprador').value; var telefone = document.getElementById('TelefoneComprador...</desc> <question vote="0"> <p>这是我的代码:</p> <pre><code><script> function sendFieldData() { var email = document.getElementById('EmailComprador').value; var telefone = document.getElementById('TelefoneComprador2').value; var nome = document.getElementById('NomeComprador2').value; var data = { CostumerEmail: email, CostumerName: nome, CostumerPhone: telefone, }; if (email) { let curfetchUrl = `${window.location.pathname}?handler=SaveAbandonedCart`; fetch(curfetchUrl, { method: 'POST', headers: { 'Content-Type': 'application/json', 'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]').value }, body: JSON.stringify(data) }) .then(response => { if (!response.ok) { return response.text().then(text => { throw new Error(text); }); } return response.json(); }) .then(responseData => { console.log('salvo com sucesso', responseData); }) .catch(error => { console.error('erro:', error); }); } } window.addEventListener('beforeunload', function (event) { setTimeout(sendFieldData, 0); }); </script> </code></pre> <p>起初,当我重新加载页面时,它只调用 IndexModel 上的方法,但这不是我想要的。我希望当用户单击关闭选项卡时也将事件触发到后端。</p> <p>观察:我已经使用了unload,但没有用。 我正在使用 Razor、Js 和 C#</p> </question> <answer tick="false" vote="0"> <p>问题是<pre><code>beforeunload</code></pre>事件侦听器<a href="https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon#sending_analytics_at_the_end_of_a_session" rel="nofollow noreferrer">不可靠</a>。页面关闭时发送分析数据已经变得如此普遍,以至于添加了一个 API 来处理它:<a href="https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API" rel="nofollow noreferrer">Beacon API</a></p> <p>这是经过调整的 JavaScript。请注意,我稍微移动了一些逻辑,以便我们可以在发送信标之前构建 <pre><code>data</code></pre> 对象。</p> <pre><code>function getData() { var email = document.getElementById("EmailComprador").value; var telefone = document.getElementById("TelefoneComprador2").value; var nome = document.getElementById("NomeComprador2").value; return { CostumerEmail: email, CostumerName: nome, CostumerPhone: telefone, }; } function sendFieldData() { var data = getData(); if (email) { let curfetchUrl = `${window.location.pathname}?handler=SaveAbandonedCart`; fetch(curfetchUrl, { method: "POST", headers: { "Content-Type": "application/json", RequestVerificationToken: document.querySelector( 'input[name="__RequestVerificationToken"]' ).value, }, body: JSON.stringify(data), }) .then((response) => { if (!response.ok) { return response.text().then((text) => { throw new Error(text); }); } return response.json(); }) .then((responseData) => { console.log("salvo com sucesso", responseData); }) .catch((error) => { console.error("erro:", error); }); } } document.addEventListener("visibilitychange", function logData() { if (document.visibilityState === "hidden") { const curfetchUrl = `${window.location.pathname}?handler=SaveAbandonedCart`; const data = getData(); navigator.sendBeacon(curfetchUrl, JSON.stringify(data)); } }); </code></pre> </answer> <answer tick="false" vote="0"> <p>尝试使用:</p> <p>window.onbeforeunload = 函数() {</p> <p>//做某事</p> <p>}</p> <p>查看绿色对勾标记代码: <a href="https://stackoverflow.com/questions/13443503/run-javascript-code-on-window-close-or-page-refresh">在窗口关闭或页面刷新时运行 JavaScript 代码?</a></p> </answer> </body></html>
如何将 .net 8.0 blazor WebAssembly 布局中的组件的值发送到 WebAssembly 外部的页面?
我创建了一个 .net 8.0 blazor Web 应用程序解决方案。 Web项目标准代码如下: 应用剃刀 <...
我正在尝试有一个简单的模式弹出窗口显示新闻文章。这是在主页上。我显示文章,如果它们超过 200 个字符,我会用一个按钮替换剩余的字符
我有以下内容部分适用于 .cshtml.cs 但不适用于 .cshtml 文件: 我是否需要更改 GlobalExceptionFilter 或者是否需要添加其他内容来捕获 .cshtml 错误? 对于
如何在 Razor 组件中使用 onbeforecopy 和 oncopy 事件?
根据此文档:https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.components.web.eventhandlers 有用于复制文本、on copy 和 onbeforecopy 的事件处理程序。看来...
!!!我提前道歉,但我只是作为一个爱好来发展!!! 我读过很多关于如何更改表单验证的默认错误消息语言的主题,但没有一个主题适用于带有 Ra 的 Net 8...
如何在保存时自动设置 HTML (.cshtml) 文档格式 (VS2022)
我依靠清理配置文件并选中“保存时运行”来确保我的代码在保存时格式化: 在 Visual Studio 2022 中保存时“设置代码格式”和“使用排序” 虽然那...
!!!我提前道歉,但我只是作为一个爱好来发展!!! 我读过很多关于如何更改表单验证的默认错误消息语言的主题,但没有一个主题适用于带有 Ra 的 Net 8...
我的 @bind-Value 有一个问题,总是出现 NULL @页面“/数据库” 数据库 我的@bind-Value有问题,总是出现NULL @page "/database" <PageTitle>Database</PageTitle> <div class="row"> <div class="col-12"> <div class="card"> <div class="card-body"> <h1 class="card-title text-center">DataBase Insert</h1> <br /> <br /> <EditForm Model="@employee" method="post" OnValidSubmit="AddNewEmployee" FormName="registerMaster"> <div class="form-floating mb-3"> <InputText @bind-Value="employee.Name" class="form-control" placeholder="Name" /> <label for="Name">Name</label> </div> <div class="form-floating mb-3"> <InputNumber @bind-Value="employee.Age" class="form-control" placeholder="Age" /> <label for="Age">Age</label> </div> <div class="form-floating mb-3"> <InputText value="employee.Title" class="form-control" placeholder="Title" /> <label for="Title">Title</label> </div> <div class="form-floating mb-3"> <InputText @bind-Value="employee.Gender" class="form-control" placeholder="Gender" /> <label for="Gender">Gender</label> </div> <button type="submit" class="btn btn-primary btn-rounded">Submit</button> </EditForm> </div> </div> </div> </div> @inject Data.AppDbContext DbContext @code{ public Employee employee = new Employee(); public async Task AddNewEmployee() { DbContext.Employees.Add(employee); await DbContext.SaveChangesAsync(); } } 我尝试了@bind-value="",这直接给了我一个使用错误@bind-Value有人可以解释一下我错过了什么吗 不确定你在做什么,但这里有一个基于你的代码的 MRE,可以工作。 解决方案是具有全局交互性的 Blazor 服务器: @page "/" <PageTitle>Database</PageTitle> <div class="row"> <div class="col-12"> <div class="card"> <div class="card-body"> <h1 class="card-title text-center">DataBase Insert</h1> <br /> <br /> <EditForm Model="@employee" method="post" OnValidSubmit="AddNewEmployee" FormName="registerMaster"> <div class="form-floating mb-3"> <InputText @bind-Value="employee.Name" class="form-control" placeholder="Name" /> <label for="Name">Name</label> </div> <div class="form-floating mb-3"> <InputNumber @bind-Value="employee.Age" class="form-control" placeholder="Age" /> <label for="Age">Age</label> </div> <div class="form-floating mb-3"> <InputText @bind-Value="employee.Title" class="form-control" placeholder="Title" /> <label for="Title">Title</label> </div> <div class="form-floating mb-3"> <InputText @bind-Value="employee.Gender" class="form-control" placeholder="Gender" /> <label for="Gender">Gender</label> </div> <button type="submit" class="btn btn-primary btn-rounded">Submit</button> </EditForm> </div> </div> </div> </div> <div class="bg-dark text-white m-2 p-2"> <pre>Name: @employee.Name</pre> <pre>Age: @employee.Age</pre> <pre>Title: @employee.Title</pre> <pre>Gender: @employee.Gender</pre> </div> @code { public Employee employee = new Employee(); public async Task AddNewEmployee() { await Task.Yield(); } public class Employee { public string? Name { get; set; } public int Age { get; set; } public string? Title { get; set; } public string? Gender { get; set; } } } 结果: