razor 相关问题

Razor是ASP.NET网页和ASP.NET MVC使用的模板语言(自版本3开始)。它在HTML生成之上添加了一层抽象。它支持HTML标记和C#或VB代码之间的无缝转换。标记和代码之间的转换由“@”符号表示。

视图无法解析操作

我在项目中配置 CRUD 时遇到了问题。视图看不到来自控制器的方法。我使用了主视图和部分视图。 主视图代码: 我在项目中配置 CRUD 时遇到了问题。视图看不到来自控制器的方法。我使用了主视图和部分视图。 主视图代码: <div class="container col-md-10 m-auto" style="width: auto;"> <div class="d-flex align-items-center justify-content-center"> <div class="btn-group" role="group" aria-label="Basic example"> <button type="button" class="btn btn-secondary btn-with-image" onclick="sendObjectType('Star')"> <div class="div-with-image" style="background-image: url('../Graphics/StaticImages/star.png');"></div> </button> <button type="button" class="btn btn-secondary btn-with-image" onclick="sendObjectType('Planet')"> <div class="div-with-image" style="background-image: url('../Graphics/StaticImages/planet.png');"></div> </button> <button type="button" class="btn btn-secondary btn-with-image" onclick="sendObjectType('Moon')"> <div class="div-with-image" style="background-image: url('../Graphics/StaticImages/moon.png');"></div> </button> </div> </div> </div> <div id="partialContainer"> </div> <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script> <script> function sendObjectType(objectType) { $.ajax({ type: "POST", url: "/Encyclopedia/Create", data: { objectType: objectType }, success: function (partialView) { $("#partialContainer").html(partialView); }, error: function (error) { console.error(error); } }); } </script> 部分视图代码: @model SolarSystemEncyclopedia.Models.Planet <div style="margin-top: 2%; margin-bottom: 2%;"> <div class="container-fluid col-md-10 m-auto"> <div class="row container-fluid d-flex align-items-center justify-content-center"> <div class="col-md-6 blue-div"> <h1>Create planet</h1> <form asp-controller="Encyclopedia" asp-action="CreatePartial" method="post" enctype="multipart/form-data"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> @Html.AntiForgeryToken() <div class="form-group mb-3"> <label asp-for="Name" class="control-label"></label> <input asp-for="Name" class="form-control main-inputs" /> <span asp-validation-for="Name" class="text-danger"></span> </div> <div class="form-group mb-3"> <label asp-for="Description" class="control-label"></label> <input asp-for="Description" class="form-control main-inputs" /> <span asp-validation-for="Description" class="text-danger"></span> </div> <div class="form-group mb-3"> <input type="submit" value="CreateMain" class="btn btn-primary" /> </div> <div> <a asp-action="Index">Back to List</a> </div> </form> </div> </div> </div> </div> 在控制器中我有以下方法: [HttpGet] public async Task<IActionResult> Create() { return View(); } [HttpPost] public IActionResult Create(string objectType) { switch (objectType) { case "Star": return PartialView("_CreateStarPartial"); case "Planet": return PartialView("_CreatePlanetPartial"); case "Moon": return PartialView("_CreateMoonPartial"); default: return BadRequest(); } } [HttpPost] public async Task<IActionResult> CreatePartial<T>(T obj) where T : CosmicObject { if (ModelState.IsValid == true) { if (obj is Planet planet) { var star = _context.Star.FirstOrDefault(s => s.Id == planet.MainStarId); planet.MainStar = star; planet.Density = Double.Parse(planet.StringDensity); } if (obj.MainImage != null) { string uploadsFolder = Path.Combine(_appEnvironment.WebRootPath, "Graphics", "ObjectImages", obj.Name); string uniqueFileName = obj.Name + "MainImage.jpg"; string filePath = Path.Combine(uploadsFolder, uniqueFileName); if (!Directory.Exists(uploadsFolder)) { Directory.CreateDirectory(uploadsFolder); } using (var fileStream = new FileStream(filePath, FileMode.Create)) { await obj.MainImage.CopyToAsync(fileStream); } } _context.Add(obj); await _context.SaveChangesAsync(); return RedirectToAction(nameof(Index)); } return View(obj); } 第一种方法打开主视图,第二种方法打开部分视图,第三种方法应在提交表单后打开。 我更改了方法的名称,尝试向视图中的表单添加不同的标签,但没有任何效果。形式表明应该调用 post 方法,但即使 post 方法和 get 方法同名,由于某种原因仍会调用 get 方法。 网上查了一下,发现可能和ajax有关,但是没找到修复的办法。 我相信您的AJAX电话不完整。另外为什么是 Create GET 方法 async ?您可以参考以下代码更改,希望能解决您的问题: 将您的 AJAX 通话更改为: <script> function sendObjectType(objectType) { var param = { objectType: objectType}; $.ajax({ type: "POST", url: '@Url.Action("Create", "Encyclopedia")', data: { "json": JSON.stringify(param)}, dataType: "html", success: function (partialView) { $("#partialContainer").html(partialView); }, error: function (error) { console.error(error); } }); } </script> 你的 Controller 方法将如下所示: [HttpGet] public IActionResult Create() { return View(); } [HttpPost] public IActionResult Create(string json) { var jsondata = JsonConvert.DeserializeObject<dynamic>(json); string objectType = Convert.ToString(jsondata["objectType"]); switch (objectType) { case "Star": return PartialView("_CreateStarPartial"); case "Planet": return PartialView("_CreatePlanetPartial"); case "Moon": return PartialView("_CreateMoonPartial"); default: return BadRequest(); } }

回答 1 投票 0

在 Razor 类库中使用 MudBlazor

我想创建一个个人剃须刀类库,在其中我需要使用 MudBlazor。如何在不要求用户在其项目上安装 MudBlazor 的情况下实现此目的? 问题是 MudB...

回答 1 投票 0

使用强类型模型从 Razor 视图页面生成 HTML 电子邮件

我正在尝试从 Razor 页面生成 HTML 电子邮件。这对于没有任何模型的 HTML 非常有效。然而,当我添加模型“WelcomeEmailModel”并尝试传递变量时,我...

回答 1 投票 0

如何编译 .NET 8 网站并包含 razor 视图?

我有一个 .NET 8 Web 项目。我遇到了无法找到视图的问题: 未找到视图“~/Features/HomePage/Index.cshtml”。搜索了以下位置:~/Features/

回答 1 投票 0

返回锚标记中包含 href="@Url.Action 的字符串

函数 iconFormatter(值,行,索引){ var idNode = row.nodeId; if (row.isFile === true) { 返回' function iconFormatter(value, row, index) { var idNode = row.nodeId; if (row.isFile === true) { return '<img src="../Test/file.png" style="margin-left: 10px;" /><a class="file-download" href="@Url.Action("DownloadFile", "Casename", new { fileId = "' + row.nodeId + '" })"> ' + value + '</a>' } return value } 在 fileId = "' + row.nodeId + '" 中,row.nodeId 返回十六进制字符串值而不是 int 值。 有人可以在这里建议所需的更正吗? 您正在混合服务器端和客户端代码。两者在完全不同的时间、完全不同的上下文中执行(通常在完全不同的计算机上)。 相反,使用服务器端代码生成带有已知占位符的 URL,然后您可以在客户端代码中替换该占位符。例如: function iconFormatter(value, row, index) { // generate the URL from server-side code // (hint: view the page source in the browser and see what this becomes) let url = '@Url.Action("DownloadFile", "Casename", new { fileId = "PLACEHOLDER" })'; if (row.isFile === true) { // replace the placeholder url = url.replace('PLACEHOLDER', encodeURIComponent(row.nodeId)); // use the resulting URL return '<img src="../Test/file.png" style="margin-left: 10px;" /><a class="file-download" href="' + url + '"> ' + value + '</a>' } return value } (如果只看客户端代码,这个结果可能看起来没有必要。那是因为对于客户端代码来说,这些都是字符串文字。客户端代码不知道服务器端功能@Url.Action。)

回答 1 投票 0

在 MVC 之外使用 Razor 组件时,Razor 布局组件不渲染

我正在构建一个.NET 控制台应用程序。这不是网络应用程序。我正在尝试使用 .NET 8 中的一项新功能在 MVC 之外渲染 Razor 组件,如本文所述: https://学习。

回答 1 投票 0

MVC 5 OWIN 使用声明和 AntiforgeryToken 登录。我是否错过了 ClaimsIdentity 提供商?

我正在尝试学习 MVC 5 OWIN 登录的声明。我尝试让它尽可能简单。我从 MVC 模板开始并插入我的声明代码(见下文)。当我使用 @H 时出现错误...

回答 7 投票 0

.Net 8 MVC:用控制器中的数据填充 DropDownList 的最佳方法

我的应用程序适用于测试,我有一个用户可以编辑测试的视图,为此我在顶部有 DropDownList 测试选择器作为下一个: @使用TestMeAdmin.Models @model TestMeAdmin.Models。

回答 1 投票 0

为什么我的表单在绑定到对象时提交空值?

当我提交表单并将结果打印到控制台时,它会给出表单的默认值。在这种情况下,它们中的每一个都是空的。 这是表单和 blazor 代码块的代码。 从...

回答 1 投票 0

ASP.NET Core 7 项目在生产中首次加载需要很长时间

我有一个 ASP.NET Core 7 Razor 页面项目。它在本地主机上运行良好,但是当我将项目上传到互联网上的 Web 服务器时,第一次加载时,需要几秒钟才能加载

回答 1 投票 0

在 HTML.ActionLink 的 MVC Razor 视图中将字典转换为字符串

我有一个字典,其中包含用于 HTML.ActionLink 链接的键值。大多数情况下都使用 TKey,但如果有一个 TValue 不为空,我想使用它...

回答 1 投票 0

在 HTML.ActionLink 的 MVC Razor 视图中将字典转换为字符串

我有一个字典,其中包含用于 HTML.ActionLink 链接的键值。大多数 TKey 都是用户的,但如果有一个 TValue 不为空,我想在...

回答 1 投票 0

如何与 Razor/Entity Framework 建立 n:1 关系

我正在使用 VS 2022 for Mac 17.6。我当前的项目是使用 .NET 7.0 的 Razor Web 应用程序和使用 SQLite 的实体框架。 这就是我想要实现的目标:在我的数据模型中,我有两个

回答 1 投票 0

如何错误处理 Razor 页面表单 OnPost

我创建了一个非常基本的 Razor ASP.NET 项目和一个生成简单元素的测试/实验表单。它生成超过 1500 个元素。在 Form Post 上,我有一个公共 IActionResult OnPost 方法...

回答 1 投票 0

如何动态更改 ASP.NET MVC 导航栏上的值(配置文件名称)并在所有操作中保持其静态?

我正在进行身份验证,成功登录后,我想在导航栏上显示用户名。我使用静态字段来保存用户名并使用 @ViewBag 来显示它,

回答 1 投票 0

为什么我的表单指向 OnPost 方法 - 多个表单 Razor Pages

我一直在遵循以下链接的教程来设置具有多种表单的 Razor 页面。 https://www.youtube.com/watch?v=-6PE4p4gUYQ 在本教程中,它确定了两种形式(形式...

回答 1 投票 0

为什么在 Razor 组件生产中抛出 Null 引用?

我有测试代码 @page“/admin/userInfo” @页面“/admin” @继承OwningComponentBase> @注入 AuthenticationStateProvider

回答 1 投票 0

在 Asp.Net Core 中实现是/否菜单的好方法是什么?

我正在使用一些 ASP.Net Core 3.1 代码,其中表单有数十个 Y/N 菜单,如下所示: @Questions.Q3_2* 我正在使用一些 ASP.Net Core 3.1 代码,其中表单有数十个 Y/N 菜单,如下所示: <div class="form-group" id="Q3_2_div"> <label>@Questions.Q3_2*</label> @Html.DropDownListFor(m => m.Answers.Q3_2, new SelectList(Enum.GetValues(typeof(YesNo))), "Select One", new { @class = "custom-select", @id = "Answers_Q3_2" }) </div> 一些 Y/N 菜单如下所示: <label>@Questions.Q140*</label> @Html.DropDownListFor(m => m.Answers.Q140, new SelectList(Enum.GetValues(typeof(YesNo)).OfType<Enum>().Select(x => new SelectListItem { Text = Enum.GetName(typeof(YesNo), x), Value = Enum.GetName(typeof(YesNo), x) }), "Value", "Text", YesNo.No), null, new { @class = "custom-select", @id = "Answers_Q140" }) “是/否”在别处定义: public enum YesNo { [Display(Name = "Yes")] Yes, [Display(Name = "No")] No } 我可以使用更简单、更简洁的语法吗?例如,标签助手有帮助吗? 标签助手是我的做法。 我的版本可能看起来像这样: <select asp-for="Answers.Q140"> <option value="Yes">Yes</option> <option value="No">No</option> </select> 干净、简单、有效。

回答 1 投票 0

如何防止 Chome 和 Edge 显示与付款无关的输入的已保存付款方式下拉列表

我们在表单上有一个字段,用于作为日期一部分的数字数据。在 Edge 和 Chrome 中,保存的付款方式都会在此字段下显示为建议。我们已经有汽车通讯了...

回答 1 投票 0

如何处理用户中心的CSP随机数? (uc-block.bundle.js)

我正在使用CSP;我在服务器端对策略进行了更改,然后在客户端使用随机数。它适用于一切。我只是对 UserCentries 有疑问。我仍然明白

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.