diff --git a/abp_io/src/Volo.AbpWebSite.Web/Pages/Templates.cshtml b/abp_io/src/Volo.AbpWebSite.Web/Pages/Templates.cshtml
index b98dd60d67..d7bc5aa603 100644
--- a/abp_io/src/Volo.AbpWebSite.Web/Pages/Templates.cshtml
+++ b/abp_io/src/Volo.AbpWebSite.Web/Pages/Templates.cshtml
@@ -1,5 +1,6 @@
@page
@using Volo.AbpWebSite
+@using Volo.AbpWebSite.Pages
@model Volo.AbpWebSite.Pages.TemplatesModel
@{
ViewBag.PageTitle = "Get Started";
@@ -24,7 +25,7 @@
-
+
@@ -77,4 +78,5 @@
}
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/abp_io/src/Volo.AbpWebSite.Web/Pages/Templates.cshtml.cs b/abp_io/src/Volo.AbpWebSite.Web/Pages/Templates.cshtml.cs
index 7e4228998c..0080189aa2 100644
--- a/abp_io/src/Volo.AbpWebSite.Web/Pages/Templates.cshtml.cs
+++ b/abp_io/src/Volo.AbpWebSite.Web/Pages/Templates.cshtml.cs
@@ -13,6 +13,7 @@ namespace Volo.AbpWebSite.Pages
{
private readonly SolutionBuilder _solutionBuilder;
private readonly IConfigurationAccessor _configurationAccessor;
+ public const string ProjectNameRegEx = @"^[a-zA-Z_][a-zA-Z0-9_]*(\.[a-zA-Z_][a-zA-Z0-9_]*)?$";
public TemplatesModel(SolutionBuilder solutionBuilder, IConfigurationAccessor configurationAccessor)
{
diff --git a/abp_io/src/Volo.AbpWebSite.Web/Pages/templates.js b/abp_io/src/Volo.AbpWebSite.Web/Pages/templates.js
index a071be578b..568e7189c1 100644
--- a/abp_io/src/Volo.AbpWebSite.Web/Pages/templates.js
+++ b/abp_io/src/Volo.AbpWebSite.Web/Pages/templates.js
@@ -7,5 +7,15 @@
$('#DatabaseProviderFormGroup').hide('fast');
}
});
+
+ $("form").submit(function (event) {
+ var regex = $("#ProjectRegex").val();
+ var patt = new RegExp(regex);
+ var res = patt.test($("#CompanyAndProjectName").val());
+ if (!res) {
+ abp.message.error("Invalid Project Name.","");
+ event.preventDefault();
+ }
+ });
});
})(jQuery);
\ No newline at end of file