我将以下正则表达式设置为ValidationExpressionWeb表单中RegularExpressionValidator 的属性.当我在经过验证的控件中输入非法字符时,验证程序会检测到它并显示错误消息.
<appSettings>
<add key="categoryPattern" value="^[a-zA-Z0-9_+\-() ]{1,50}$" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
我的验证员:
<asp:RegularExpressionValidator ValidationExpression="<%$ AppSettings:categoryPattern %>"
Run Code Online (Sandbox Code Playgroud)
我的服务器端验证:
Regex rex = new Regex(ConfigurationManager.AppSettings["categoryPattern"]);
if (!rex.Match(categoryName).Success)
{
throw new ArgumentException("CategoryName must match expression: " + rex);
Run Code Online (Sandbox Code Playgroud)
如您所见,客户端和服务器端应用了完全相同的模式.
但是,当我清除已验证的控件并提交一个空字符串时,验证器认为它没问题,并且我从服务器端验证中收到错误.除了违反RegularExpressionValidator的合同外,任何人都知道这里有什么问题吗?
我习惯于使用数据注释属性来装饰数据模型类,但是我的纯粹主义者在这里略微包含纯粹的表现属性,例如显示格式.但是,我很高兴在这里保留以验证为中心的属性.我必须继续在数据模型中保留所有注释等的一个好理由是我的视图模型聚合了数据模型类,例如ViewModelBase.DetailItem<TEntity>视图模型中的我的属性只是对数据模型中的实体类的引用.如果我想将表示注释移动到视图模型,我必须彻底修改我的设计,在我的视图模型中复制数据模型属性,并使用对象映射工具根据数据模型对象填充视图模型对象.
我应该在哪里进行数据注释?
顺便说一下,这就是我的粗略草图ViewModelBase:
public class ViewModelBase<T>
{
public virtual string PageTitle { get; set; }
public virtual string ViewHeading { get; set; }
public virtual ViewMode ViewMode { get; set; }
public virtual IEnumerable<T> ItemList { get; set; }
public virtual T DetailItem { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 我有一个名为控制器的控制器InstallationController,以及一个名为Rate Card的安装的奇特报告表示,但最终用户坚持自己调用安装速率卡.我希望他能看到URL http:// site/RateCard/Edit/3,其实际路由为http:// site/Installation/Edit/3.我怎么能在MVC 3 RC2中做到这一点?
我继承了使用纯HTML和ASP.NET服务器控件布局的Web表单报表,常见的布局模式是使用四列表格布局的部分,第一列和第三列用于字段标签,第二列和第四列用于字段标签值的列.
由于我的任务是"重新设置皮肤"报告,我认为我会尝试改进标记的语义并删除所有不用于实际表格数据的表.在对名称 - 值对的定义列表进行一些实验之后,我决定使用ol/li组合,但我无法弄清楚如何在每个li中获取两个文本元素以占据整个li元素的宽度的50%.
这是列表的css:
ol.name-value
{
list-style: none;
display: table;
}
ol.name-value li {
display: table-row;
border-bottom: 1px solid #E8E8E8;
}
Run Code Online (Sandbox Code Playgroud)
这是HTML:
<div class="span-12">
<ol class="name-value" style="width: 100%;">
<li>
<label for="about">Client</label>
<span id="about">Apartment Applied Visual Arts</span>
</li>
<li>
<label for="about">Report Date</label>
<span id="Span1">2011/08/08 16:50:10</span>
</li>
<li>
<label for="about">Report No.</label>
<span id="Span2">33251</span>
</li>
</ol>
</div>
Run Code Online (Sandbox Code Playgroud)
这就是我得到的结果."报告详细信息"部分是一个两列表,其中"报告详细信息"是上面的有序列表.我想要获得清单

当我尝试访问我新部署的(到lcoal IIS 7.5)MVC4应用程序时,我收到错误:
用户'DOMAIN\MACHINE-NAME $'登录失败
其中附加'$'而不是机器名称的一部分.
web.config中的连接字符串如下所示:
<add name="ComairRIEntities"
connectionString="metadata=res://*/Data.ComairRI.csdl|res://*/Data.ComairRI.ssdl|res://*/Data.ComairRI.msl;provider=System.Data.SqlClient;provider connection string="data source=(local);initial catalog=MyDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud) 我还找不到很多适当的Core 1教程,但是当我谷歌的方法名称时,我得到了无数的例子,说明要包含在Startup.cs:
app.UseDefaultFiles();
app.UseStaticFiles();
Run Code Online (Sandbox Code Playgroud)
然而,我得到编译错误,这两种方法都不存在app,这是类型IApplicationBuilder.这些呼叫不再需要,或者命名完全不同,还是设置在其他地方?
我正在编写一个小应用程序,它可以读取必须定期从设备外部源写入存储设备的文件,无论是USB,蓝牙,Airdroid等.从我读过的,没有什么可以写到内部存储器.我想管理内部存储中的文件以获取访问隐私.
我的第一个解决方案是允许用户将文件写入外部存储器,然后点击按钮将其传输到内部存储器的活动.如果在n分钟内没有发生这种情况,则会破坏外部存储上的文件.但是,我发现这getExternalStorageDirectory是非常无用的,因为设备模仿内部存储上的外部存储,Android无法知道是否以及如何完成.
然而,我想知道是否没有某种内置活动允许用户直接从内部存储上传或下载文件,但不能免费访问内部存储的整个文件结构,就像他们使用内部存储一样.
作为最后的手段,也许我的应用程序可以通过TCP连接接收文件并将其写入内部存储本身.它很乱,但试图找到一张SD卡也是如此.请参阅问题查找外部SD卡位置.
新功能:此练习的目的是查找SD卡上目录中的所有.csv文件,让用户选择一个,处理它,并将输出文件写入SD卡.用户将输入"权重"值,该值将用于处理文件的计算中.
但是,由于Android在提供真正外部存储(即SD卡)的位置方面是如此不可靠,我想尝试将文件存储在内部存储中,其中Android似乎对该存储的位置更加诚实和可靠.
我有这个文件,从教程中粘贴(让我们面对它,文档,tuts和示例之间的差异令人震惊):
/scripts/tsconfig.json:
{
"compilerOptions": {
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"module": "commonjs",
"noEmitOnError": true,
"noImplicitAny": false,
"outDir": "../wwwroot/appScripts/",
"removeComments": false,
"sourceMap": true,
"target": "es5",
"moduleResolution": "node"
},
"exclude": [
"node_modules",
"typings/index",
"typings/index.d.ts"
]
}
Run Code Online (Sandbox Code Playgroud)
选项设置为在保存时编译,但每当我保存一个TypeScript文件时,JavaScript输出最终在源文件的"下"或"附加到":
TypeScript
|
--test.ts
|
--test.js
Run Code Online (Sandbox Code Playgroud)
,它与源物理位于同一目录中/TypeScript.如果tsconfig.json缺少,编译器会抱怨,但是当它存在时,肯定是,编译器会忽略该"outDir": "../wwwroot/appScripts/"设置.
我真的是Gulp的新手,但Gulp的任务看起来还不错:
var tsProject = ts.createProject('scripts/tsconfig.json');
gulp.task('ts', function (done) {
//var tsResult = tsProject.src()
var tsResult = gulp.src([
"scripts/*.ts"
])
.pipe(ts(tsProject), undefined, ts.reporter.fullReporter());
return tsResult.js.pipe(gulp.dest('./wwwroot/appScripts'));
});
Run Code Online (Sandbox Code Playgroud) 我有以下标记:
<StackPanel Grid.Row="0" Orientation="Horizontal">
<StackPanel Orientation="Horizontal" Visibility="{Binding OrgListVisibility}">
<Label Content="Org:" />
<ComboBox ItemsSource="{Binding OrgSelectList, NotifyOnSourceUpdated=True}" SelectedValuePath="Key" DisplayMemberPath="Value" SelectedItem="{Binding OrgId}" />
</StackPanel>
<StackPanel Orientation="Horizontal" Visibility="{Binding BranchListVisibility}">
<TextBlock Text="Branch:" Style="{StaticResource FormLabel}" />
<ComboBox x:Name="BranchList" ItemsSource="{Binding BranchSelectList}" SelectedValuePath="Key" DisplayMemberPath="Value" SelectedItem="{Binding BranchId}" />
</StackPanel>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
然而,当我运行应用程序时,只有来自的文本TextBlock是可见的,而不是Label.后者在视觉树中,TextBlock内心深处,但就我所见.
AS REQUESTED:这是以下样式FormLabel:
<Style TargetType="TextBlock" x:Key="FormLabel">
<Setter Property="Height" Value="20" />
<Setter Property="Margin" Value="10" />
<Setter Property="TextAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
Run Code Online (Sandbox Code Playgroud)
一个类似的问题: 当我将它绑定到泛型类的实例集合时,我发现了一个与组合框几乎相似的问题.这些项目的文字根本没有显示,但它们存在于组合框中.通过知道我所寻找的物品的位置正确地级联到具有可见物品的第二个组合框来选择一个,并且我可以看到已经选择了正确但不可见的物品.
只要我将项目源更改为非通用对象列表,下拉列表中的项目就会再次可见.
我正忙于编写处理程序来提供各种文档,以便在Web表单页面中下载或显示.这些文档的范围从各种图像格式,PDF,MS Office文档到通用二进制文件.我的下载过程基本草案如下:
public void ProcessRequest(HttpContext context)
{
var docUrl = context.Request["docUrl"];
if (string.IsNullOrEmpty(docUrl)) {
context.Response.End();
return;
}
var docPath = context.Server.MapPath(docUrl);
var docInfo = new FileInfo(docPath);
context.Response.Clear();
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(docPath));
context.Response.AddHeader("Content-Length", docInfo.Length.ToString());
context.Response.ContentType = "application/octet-stream";
context.Response.WriteFile(docPath);
context.Response.End();
}
Run Code Online (Sandbox Code Playgroud)
但是,我对将所有文档整合在一起时有些疑虑application/octet-stream,如果可行的话,我希望每种文档类型使用更具体的内容类型.我有一个文件类型的数据库表,我可以存储它.我是否朝着正确的方向前进,如果是这样,我在哪里可以找到合适的文档类型内容类型的起始列表?
asp.net ×4
asp.net-mvc ×3
asp.net-core ×2
android ×1
android-file ×1
asp.net5 ×1
c# ×1
css ×1
database ×1
gulp ×1
html ×1
json ×1
routing ×1
typescript ×1
wpf ×1
xaml ×1