好的,已经尝试了几个小时,可以使用一些帮助.我正在尝试在MVC 3中实现一个具有"后退"和"下一步"按钮的页面.单击后退按钮时,我想禁止运行客户端MVC验证,以便我的操作方法将运行并将用户发送到上一个逻辑网页.我试过这个:
<script type="text/javascript">
document.getElementById("backButton").disableValidation = true;
</script>
Run Code Online (Sandbox Code Playgroud)
还有这个:
<input type="submit" name="backButton" value="? Back"
title="Go back to step 1." disableValidation="true" />
Run Code Online (Sandbox Code Playgroud)
但无论如何,静音端验证JavaScript都会启动,并且不会让按钮执行回发操作.我认为这可能disableValidation仅适用于MVC 2,我应该在MVC 3中做其他事情,但似乎无法找到任何示例.
当这些内容溢出一个"屏幕"时,是否有人想出如何滚动布局编辑器的内容?我在使用ADT布局编辑器时在设计时谈论,而不是在物理设备上运行时滚动(工作正常).
在一些书籍和在线中,我看到在创建数据库之后进行的这些方法调用:
db.setLocale(Locale.getDefault());
db.setLockingEnabled(true);
db.setVersion(DB_VERSION);
Run Code Online (Sandbox Code Playgroud)
为什么这样做?据我所知,在创建一个新数据库之后,系统会添加一个名为android_metadata的表,其中一个字段名为locale,该表有一行,其中locale字段设置为"en_US".现在我假设该列具有该值,因为我使用的是美国手机,如果我使用的是来自其他地区的手机,那么将适当地设置区域设置字段.谁能证实这一点?我猜测setLocale方法仅在您将预先构建的数据库安装到手机上然后想要更改区域设置以匹配手机的区域设置时才有用.听起来不对?
setLockingEnabled的文档说它默认为true所以不需要进行那次调用,对吧?
最后,调用setVersion是什么?我找不到包含此信息的表,所以我一直假设数据库文件本身在某处存储了版本号.因此,当我创建一个数据库时,要求您已经在调用SQLiteOpenHelper构造函数时指定了版本号,那么调用setVersion是没有意义的.同样,也许这种方法适用于将预先构建的数据库安装到设备的情况,然后您希望更改数据库的版本(尽管我无法想到何时这样做有意义).
感谢您的任何见解!
花了很多时间弄清楚如何让 Autofac 加载插件。我是 Autofac 的新手。
我有像 ServiceA.dll、ServiceB.dll 等插件。在配置我的 Autofac 容器时,我扫描当前目录中的 Service*.dll 并从文件名和存储中提取服务“A”、“B”的名称在名为 serviceName 的变量中。然后我找到实现 IService 的服务类的类型并将其放入名为 serviceType 的变量中。每个服务还有一个名为 <serviceName>Settings 的配置设置类,因此我找到该类并将其类型放在名为 serviceSettingsType 的变量中。然后注册:
builder.RegisterType(serviceType)
.Named<IService>(serviceName);
builder.RegisterType(serviceSettingsType)
.Named<IServiceSettings>(serviceName+"Settings")
Run Code Online (Sandbox Code Playgroud)
构建 Autofac 配置后,我可以获得如下服务类型:
scope.ResolveNamed<IService>("A");
Run Code Online (Sandbox Code Playgroud)
并且很快,类 ServiceA 被实例化。但是,ServiceA 需要一个 ctor 参数:
public class ServiceA(ServiceASettings settings) {}
Run Code Online (Sandbox Code Playgroud)
Autofac 很好地实例化了一个 ServiceASettings 类(它只是一个具有一个或多个属性的“数据类”)并将其传递到 ServiceA 的构造函数中。
我无法弄清楚的是如何告诉 Autofac 创建一个 ServiceASettings 类以传递到 ServiceActor 它需要实例化一个 SettingsManager 类然后调用var settings = await Task<T> ReadFromFile(string settingsFilename)(其中 T 是 ASettings 类的类型)并使用该设置类在 ServiceA 的 ctor 调用中。就像上面的服务名称(示例中的“A”)是从命令行确定的一样,传递给 ReadFromFileAsync 的 settingsFilename 需要在运行时传入。
希望这是有道理的。我觉得我已经非常接近使用 Autofac 加载插件了,但就是无法为 Service …
考虑这个app.config appSetting条目:
<add key="serilog:write-to:RollingFile.pathFormat"
value="ServerServiceApp-{Date}.log" />
Run Code Online (Sandbox Code Playgroud)
这是在app启动时完成的:
Log.Logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
.Enrich.WithThreadId()
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
这是在Windows服务应用程序中.日志文件最终在这里:
C:\Windows\SysWOW64
Run Code Online (Sandbox Code Playgroud)
显然,我们宁愿将日志文件放在同一目录中,该目录包含此服务的.exe(客户不希望我们将内容写入SysWOW64).但是怎么样?
我们需要ReadFrom.AppSettings,以便客户可以根据需要在app.config中提供serilog设置.
在ReadFrom.AppSettings完成后,是否有某种方法可以更改用于日志文件的目录?
如果我们能说出类似的话会很棒:
<add key="serilog:write-to:RollingFile.pathFormat"
value="{ApDomainBaseDirectory}\ServerServiceApp-{Date}.log" />
Run Code Online (Sandbox Code Playgroud)
({Date}在哪里,可以放在文件路径中,记录?)
android ×2
asp.net-mvc ×1
autofac ×1
c# ×1
client-side ×1
database ×1
serilog ×1
sqlite ×1
validation ×1