首先,我是MVC和ASP.NET的新手,如果我遗漏了一些简单的东西,请道歉.
我正在编写一个代码第一个MVC 5应用程序,为了简洁起见,我可以说我有两个这样定义的模型:
public class Platform
{
[Key]
public int Id { get; set; }
[Required(ErrorMessage = "You must select a manufacturer")]
[DisplayName("Manufacturer")]
public int ManufacturerId { get; set; }
public virtual Manufacturer Manufacturer { get; set; }
[Required(ErrorMessage="You must enter a name for the platform")]
[StringLength(50, ErrorMessage="Reduce length to 50 characters or less")]
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和
public class Manufacturer
{
[Key]
public int Id { get; set; }
[Required(ErrorMessage="You must enter a name …Run Code Online (Sandbox Code Playgroud) 我正在使用Validation.Add()和Html.TextBox()(以及相关的)帮助器与不显眼的 JavaScript 错误检查相结合,并且对结果非常满意。它用一组代码涵盖了服务器和客户端,通常我已经能够实现我需要的一切。
不过,我遇到了一些障碍,因为有时您需要运行自己的逻辑来建立错误情况。如果此错误直接与某个字段相关,那么最好使用任意错误消息手动将该字段标记为错误源 - 我相当确定没有办法立即执行此操作。为了澄清我的意思,一个示例是用户名字段,需要检查用户名是否已在使用中 - 如果是,则会生成错误。
目前,我使用 将其添加到表单错误集合中Validation.AddFormError(),该方法有效,但仅在摘要中显示错误。在上面的示例中,错误显然与用户名字段相关,因此能够将该错误与适当的字段名称联系起来(并将其显示在正确的位置)似乎是合乎逻辑的。
我应该从 派生RequestFieldValidatorBase并创建一个仅返回到 的验证器false吗IsValid()?显然,作为服务器端检查,我不希望在客户端检查它,尽管我知道通过为验证系统编写更具体的验证器和插件、公开更多data-属性并执行 AJAX也可以实现这一点查看。我对这个问题感兴趣的是一个更通用的解决方案:将特定字段标记为服务器端错误的来源。
希望这是有道理的。人们会推荐什么作为解决这个问题的最佳方法?
如果部署的文件夹中包含用户生成的内容,我会将其从.pubxml文件中的发布中排除:
<ExcludeFoldersFromDeployment>somefoldername</ExcludeFoldersFromDeployment>
Run Code Online (Sandbox Code Playgroud)
如果使用" 在目标位置删除其他文件"选项进行部署,则仍会从实时服务器中删除此文件夹中的文件.
<SkipExtraFilesOnServer>False</SkipExtraFilesOnServer>
Run Code Online (Sandbox Code Playgroud)
有没有办法使部署过程,包括清理实时服务器,忽略指定的文件夹?
是否可以将 ASP.NET Core Web 应用程序配置为使用编译EditorTemplate到类库/单独程序集中的 razor 页面?
作为示例,以下问题详细说明了如何ViewComponent将 a 编译为类库。不幸的是,我找不到任何有关对EditorTemplate页面执行相同操作的信息。
class-library .net-assembly mvc-editor-templates asp.net-core-mvc asp.net-core
asp.net ×1
asp.net-core ×1
asp.net-mvc ×1
c# ×1
iis ×1
webdeploy ×1
webmatrix ×1
webmatrix-2 ×1