天道酬勤,学无止境

asp.net-mvc

DropDownListFor not binding value

问题 我有以下 ViewModel public class ContactAddViewModel { string _title; public ContactAddViewModel() { var titles = new List<SelectListItem>() { new SelectListItem() { Value = "Mr", Text= "Mr" }, new SelectListItem() { Value= "Miss", Text="Miss" }, new SelectListItem() { Value = "Mrs", Text= "Mrs" }, new SelectListItem() { Value = "Ms", Text = "Ms" }, new SelectListItem() { Value = "Dr", Text = "Dr" } }; Titles = titles; } [Required] [Display(Name = "Title")] public string Title { get; set; } public IEnumerable<SelectListItem> Titles { get; set; } ... 在控制器中调用: var ctc = new ContactAddViewModel() {

2022-07-11 10:00:19    分类:技术分享    asp.net-mvc   asp.net-mvc-5

A way of properly handling HttpAntiForgeryException in MVC 4 application

问题 这是场景: 我有一个登录页面,当用户签名时,它被重定向到主页应用程序页面。 然后用户正在使用浏览器后退按钮,现在他在登录页面上。 他尝试再次登录,但现在抛出异常: HttpAntiForgeryException (0x80004005):提供的防伪令牌用于用户“”,但当前用户是“用户名”。 我知道这与缓存有关。 我使用自定义 NoCache 过滤器禁用了登录操作的浏览器缓存,该过滤器设置了所有必需的标头 - 无缓存、无存储、必须重新验证等。但是 这不适用于所有浏览器尤其是 Safari(大多数情况下是移动设备)完全忽略了这些设置 我将尝试进行黑客攻击并强制 safari mobile 刷新,但这不是我所期望的。 我想知道我是否可以: 处理异常而不向用户显示任何问题存在(对用户完全透明) 如果我与浏览器缓存相关的黑客在下一版本的浏览器中停止工作,则通过替换防伪令牌用户名来防止此问题,这将允许用户再次登录而不会出现此异常。 我真的不想依赖浏览器的行为,因为每个人的行为都不同。 更新 1 澄清一下,我知道如何处理 MVC 中的错误。 问题是这种处理错误根本没有解决我的问题。 错误处理的基本思想是重定向到带有好消息的自定义错误页面。 但我想防止这个错误发生,而不是以用户可见的方式处理它。 通过句柄,我的意思是捕获用户名替换或其他合适的操作,然后继续登录。 更新 2

2022-07-11 09:32:51    分类:技术分享    c#   asp.net-mvc   antiforgerytoken

How can you specify a css class name on ActionLinks in Razor?

问题 以下代码生成错误: @Html.ActionLink("Title", "action", new { id=1 }, new { @class = "myCssClass" }); 我尝试使用 @ 因为class是一个关键字。 使用剃须刀的时候应该怎么写? 编辑 问题不是真正的 at 符号,而是我没有将块与我的if一起使用: @if (blabla) @Html.ActionLink("Title", "action", new { id=1 }, new { @class = "myCssClass" }); 作品: @if (blabla) { @Html.ActionLink("Title", "action", new { id=1 }, new { @class = "myCssClass" }); } 两个答案都投了赞成票,因为它们让我意识到了这个问题。 回答1 尝试编写如下内容: @(Html.ActionLink("Title", "action", new { id=1 }, new { @class = "myCssClass" })); 有一篇与您的问题相关的关于 Razor 的好帖子:ScottGu 博客 回答2 简单地: @Html.ActionLink("Title", "action", new { id=1 }, new { @class =

2022-05-17 05:25:24    分类:技术分享    asp.net-mvc   razor

ASP.NET/MVC: Knockout-binding preventing client-side validation from being performed?

问题 这是这个问题的后续,或者更确切地说是替代这个问题:MVC/ASP.NET: Client side validation not working 问题是,并且是,我的 ASP.NET/MVC 客户端验证没有被执行,即使它应该执行。 现在我已经做了更多的测试,似乎我已经确定了问题的核心,所以这里。 我有一个 ViewModel 如下: public class RegisterViewModel { [Required] [EmailAddress] [Display(Name = "Email")] public string Email { get; set; } // some other properties... } 以及我的视图中的相应表单(同样,仅显示电子邮件字段的代码): @model Treinen2.Models.RegisterViewModel @{ ViewBag.Title = "Register"; } @using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) { @Html.AntiForgeryToken() <h4>Create a new account.</h4>

2022-05-17 03:38:19    分类:技术分享    asp.net-mvc   validation   knockout.js   client-side

Target framework set as .NET 4.6.2, but TargetFrameworkName shows .NET 4.5

问题 我在 Web.config 中有一个 ASP.NET MVC 5 项目,其中包含以下内容 <compilation debug="true" targetFramework="4.6.2"> 和 <supportedRuntime version=".NETFramework,Version=v4.6.2" /> 但是, AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName在 IIS Express 和 IIS 上都返回.NETFramework,Version=v4.5而不是 4.6.2。 如何让 AppDomain 加载 .NET 4.6.2 而不是 4.5? 回答1 通过项目属性对话框将项目从 .NET 4.5 升级到 .NET 4.6.2 时,Visual Studio 仅更改compilation targetFramework 。 但是, httpRuntime targetFramework保留在 4.5。 compilation targetFramework="4.6.2"针对 .NET 4.6.2 编译我的代码,但是当 IIS 运行时,它读取httpRuntime targetFramework="4.5"并因此在 .NET 4.5 中运行。 回答2 您是否在安装了 4.6.2

2022-05-17 02:46:03    分类:技术分享    asp.net-mvc

MVC RedirectResult

问题 我是 MVC 的新手,谁能告诉我RedirectResult的用途是什么? 我想知道这之间有什么不同: public ActionResult Index() { return new RedirectResult("http://www.google.com"); } 还有这个: public RedirectResult Index() { return new RedirectResult("http://www.google.com"); } 回答1 它用于执行到给定 url 的 HTTP 重定向。 基本上,它会在响应中发送 302 状态代码和 Location 标头,以便客户端现在向这个新位置发出新的 HTTP 请求。 通常你会像这样使用它而不是显式调用构造函数: public ActionResult Index() { return Redirect("http://www.google.com"); } 就您的两个代码片段之间的差异而言,它是 C# 问题而不是 MVC 相关问题。 事实上 RedirectResult 派生自 ActionResult 所以两者都是有效的语法。 我个人更喜欢第一个,例如,您可以决定更改此重定向以返回视图: public ActionResult Index() { return View(); }

2022-05-16 22:10:13    分类:技术分享    c#   asp.net-mvc

PDF Embeded in html page scroll bar issue

问题 我已经使用对象将 pdf 嵌入到我的页面中。 它在 chrome 中工作正常,但在 IE 中我遇到了一个问题,比如当我滚动页面时它与面板重叠,如附图所示。 <object data="@Url.Action("ViewDisclosure","ProviderEnrollment")" type="application/pdf" style="z-index:9" width="90%" height="400"></object>

2022-05-16 16:04:03    分类:技术分享    html   asp.net-mvc   razor

A field initializer cannot reference the non-static field, method, or property 'Controller.HttpContext'

问题 我正在尝试通过执行以下操作来获取在控制器中使用应用程序的用户: public class TableNameController : Controller { private ConnectionString db = new ConnectionString(); private string userIdentity = HttpContext.User.Identity.Name.Split('\\')[1].Replace(".", " "); 当我这样做时,我在HttpContext下得到一个红色波浪线,上面写着: 字段初始值设定项不能引用非静态字段、方法或属性“Controller.HttpContext” 无法在静态上下文中访问非静态属性“HttpContext” 我该如何解决这个问题? 回答1 public class TableNameController : Controller { ... private string userIdentity; public TableNameController() { userIdentity = HttpContext.User.Identity.Name.Split('\\')[1].Replace(".", " "); } ...

2022-05-16 13:14:03    分类:技术分享    c#   asp.net-mvc

EntityFrameworkCore does not exist in the namespace Microsoft

问题 我正在尝试在这里完成本教程。 https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro 但是,在使用以下命令在包管理器控制台中成功安装 EntityFrameworkCore 后: 安装包 Microsoft.EntityFrameworkCore.SqlServer 然后在cmd中运行dotnet restore成功,项目没有注册EntityFrameworkCore。 在 .csproj 文件中,您可以看到该行 <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.1" /> 不幸的是,每当我在文件中添加带有 Microsoft.EntityFrameworkCore 的 using 语句时,我都会收到标题中提到的错误。 知道为什么会发生这种情况吗? 回答1 我通过以下方式解决了这个问题: (1) 在解决方案资源管理器中右击项目 (2) 点击卸载项目 (3)点击编辑.csproj并检查是否有对EF的包引用 (4) 在解决方案资源管理器中再次右键单击该项目 (5) 然后点击reload project 现在它可以识别 EntityFrameworkCore 并且不再有构建错误 回答2 在视觉代码中:

2022-05-16 13:00:04    分类:技术分享    c#   asp.net-mvc   entity-framework-core

Uploading files in chunks with blueimp in Asp.Net MVC

问题 回答1 我想你的意思是来自 blueimp 的 FileUpload jquery 模块。 这就是我在项目中处理它的方式。 我上传不超过 30MB 的大图像。 所以这个例子只是关于代码,而不是你需要处理 1GB 的文件。 这是 javascript 代码的一部分。 没有什么特别的。 我只是遵循 FileUpload 文档和示例。 我只是发送了更多属性(包括 AntiforgeryToken)——正确行为不需要这些属性。 $("#file-upload").fileupload({ url: 'upload-file', dataType: 'json', autoUpload: false, maxChunkSize: 5000000, progressInterval: 1000, bitrateInterval: 1000 }).on('fileuploadadd', function (e, data) { fileData = data; // save data to be able to submit them later if (window.File && window.Blob) { // update form data data.formData = { uploadFolder: '/upload-folder/some-guid', _

2022-05-16 11:35:14    分类:技术分享    javascript   jquery   asp.net   asp.net-mvc   blueimp