我的模型包含一个名为的属性Title
,在我Create
看来,我使用了设置页面标题ViewBag.Title
.
这会产生以下问题:生成的表单Html.Editor
将显示文本ViewBag.Title
,而不是模型的Title
值.
我找到的唯一解决方法是先调用Html.Editor
,然后设置View.Title
.
有没有人有更好的解决方案?
编辑1:我正在使用MVC 3.
编辑2:这是我的DisplayTemplates/Object.cshtml
:
@model dynamic
@using Iconum.VS10CS040.Library.Web.MVC3.Helpers
@if (ViewData.TemplateInfo.TemplateDepth > 1) {
<span class="editor-object simple">@ViewData.ModelMetadata.SimpleDisplayText</span>
} else {
foreach (var prop in ViewData.ModelMetadata.Properties.Where(
pm =>
pm.ShowForEdit
&& !ViewData.TemplateInfo.Visited(pm)
&& pm.ModelType != typeof(System.Data.EntityState)
&& !pm.IsComplexType
)
)
{
if (prop.HideSurroundingHtml) {
<text>@Html.Editor(prop.PropertyName)</text>
} else {
string css = "";
if (prop.Model != null && prop.Model.GetType() != null)
{
css …
Run Code Online (Sandbox Code Playgroud) 可能重复:
获取变量或参数的名称
我希望能够将变量的名称作为字符串.
这可以通过使用无参数的lambda表达式有效地实现.但是,这会产生性能开销,并且它不是内置功能.
.NET 4.5 CallerMemberNameAttribute
提供了一个调用者的名称作为方法参数.这为我们提供了内置和更好(在某些情况下)的方式来满足特定情况.
.NET 4.5为特定上下文提供了该领域的改进.现在还有一个更好的^意味着将任何变量的名称作为字符串?
根据要求,这是我想要实现的一般用法示例:
//Assume 'myVariable' is a local variable, member variable, static member variable, constant, parameter or even a property.
string myVariableName = ...; //This should get the string name of myVariable
Run Code Online (Sandbox Code Playgroud)
^更好,我的意思是更快,不需要反射,内置.NET或更优雅,但最好是这些的组合.
说我有一些代码,如下所示:
var someCollection = new int[] {};
var result = someCollection.SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)
然后我想确定是否result
是默认值.但是,我想以可维护的方式这样做,以便如果元素类型发生someCollection
更改,其余代码不需要更改.
这通常似乎完成的方式(在一般意义上)是result == null
.当然,在这种情况下,类型不是引用类型,因此这不起作用.
避免这种假设的改进是result == default(int)
.但是,更改元素类型也需要将参数更改为default
,因此仍然不满足仅在一个位置更改类型的要求.
在最近几个版本的Visual Studio中安装扩展程序似乎很容易.但是,据我所知,它们仅为运行该程序的用户安装.
管理员如何在系统范围内安装扩展程序,以便Visual Studio中的所有用户都可以使用它?
我知道有一小部分扩展是作为安装程序提供的,可以为所有用户安装扩展,但是,大多数扩展似乎都是作为VSIX文件提供的.
我有一个带有AccessibilityService
. Android 似乎一直AccessibilityService
在运行,但我有时只需要运行我的。(具体来说,如果用户打开我的应用程序并将其关闭,AccessibilityService
则不再需要。)
如果我AccessibilityService
在不需要的时候运行,那就是在浪费设备的 RAM 和 CPU,如果可能的话,我想避免对我的用户这样做。
如何以编程方式启动和停止我的AccessibilityService
?
请注意,我不是要求以编程方式启用或禁用AccessibilityService
Android 的辅助功能设置;这只是在它已经启用时启动和停止它。
AccessibilityService
)AccessibilityService
使用以下方法禁用组件:
PackageManager.setComponentEnabledSetting(
accessibilityServiceName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
0
);
Run Code Online (Sandbox Code Playgroud)
这杀死了整个应用程序,包括AccessibilityService
. 此外,重新启动手机后,AccessibilityService
Android 辅助功能设置中不再可见。(似乎需要重新启用该组件,然后重新启动手机才能使其再次显示。)
AccessibilityService
使用以下方法禁用组件:
PackageManager.setComponentEnabledSetting(
accessibilityServiceName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP
);
Run Code Online (Sandbox Code Playgroud)
这并没有阻止AccessibilityService
.
停止AccessibilityService
使用Context.stopService()
和Service.stopSelf()
。这些并没有停止服务,大概是因为操作系统绑定到它。
杀死AccessibilityService
使用的过程Process.killProcess()
。但是,该服务在重新启动并重新连接后不久,大概是因为操作系统绑定到它。
使用 取消注册可访问性事件AccessibilityService.setServiceInfo(new AccessibilityServiceInfo())
。这会阻止服务获取可访问性事件,但服务仍会在后台运行。
这只是关于停止服务。我希望能够在服务停止后再次启动它。
给定文件的名称,如何确定文件当前是打开还是正在使用?(我说的是文件而不是Perl文件句柄.)
请注意,我正在寻找通用的Perl解决方案,而不是特定于操作系统的解决方案.至少,我想在Windows和基于GNU/Linux的系统上都能运行.
我注意到TypeScript支持使用以下类型:
{}
(在规范中称为空对象类型)Object
就我所知,它们似乎都是等同的和可互换的.它们之间有什么区别?
请帮我解决这个问题.我刚刚从开发者控制台android vitals得到了这个.我不知道如何重现崩溃.我只想知道它为什么会发生,或者如果可能的话我该如何解决它.
java.lang.RuntimeException:
at android.app.LoadedApk.makeApplication (LoadedApk.java:612)
at android.app.ActivityThread.handleBindApplication (ActivityThread.java:4673)
at android.app.ActivityThread.access$1500 (ActivityThread.java:162)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1409)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:135)
at android.app.ActivityThread.main (ActivityThread.java:5422)
at java.lang.reflect.Method.invoke (Method.java)
at java.lang.reflect.Method.invoke (Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:914)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:707)
Caused by: java.lang.IllegalStateException:
at android.app.LoadedApk.initializeJavaContextClassLoader (LoadedApk.java:458)
at android.app.LoadedApk.makeApplication (LoadedApk.java:604)
Run Code Online (Sandbox Code Playgroud) 我正在考虑开发一个免费的非企业Windows 8风格的应用程序.我希望能够分发它而不向我或用户收取任何费用.(请注意,我不是在询问Windows 7风格的桌面应用程序.)
从Microsoft社区,似乎分发这些类型的应用程序的唯一方法是使用Windows应用商店.实际上,自从删除术语" metro"后,在我看来,其中一个替代短语是Windows Store应用程序,这显然意味着与Windows应用商店的强大关联.
该商店的许可协议似乎支持分发免费应用程序.但是,我还读到,没有(永久)免费方式将商店用作开发人员.(例如,请参阅此内容.)微软似乎确实推出了一些"免费"方法来实现这一目标,但它们似乎是第一年免费订阅,在接下来的几年中仍然需要信用卡详细信息.
我已经查看并考虑了以下Stack Overflow问题:
如何分发免费的Windows 8应用程序而无需支付Windows Store开发人员帐户的费用?
open-source windows-8 windows-store windows-store-apps sideloading
我的应用程序在该Application::onCreate()
方法中进行了相当多的初始化,并且我有一个检查,如果它被调用两次将抛出异常.
但是,在某些特定情况下,Application::onCreate()
被调用两次.我在下面添加了以下Log
语句onCreate()
:( instance
是一个静态变量)
Log.i(TAG, "Application::ctor, this=" + this + " instance=" + instance + " pid="
+ android.os.Process.myPid());
Run Code Online (Sandbox Code Playgroud)
我有两个日志(通常,instance == null
):
09-20 19:14:42.151 {main} [INFO] [Application] Application::ctor, this=com.shawnma.MyApplication@428886b0 instance=null pid=10741
09-20 19:14:50.116 {main} [INFO] [Application] Application::ctor, this=com.shawnma.MyApplication@42923e00 instance=com.shawnma.MyApplication@428886b0 pid=10741
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我从onCreate()
方法返回- 它不会受到伤害,因为一切都应该在内存中.但是,另一个例外是在Android系统之后立即显示:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.innopath.mobilemd/com.innopath.mobilemd.ui.LauncherActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511) …
Run Code Online (Sandbox Code Playgroud) android ×3
.net ×2
c# ×2
.net-4.5 ×1
asp.net-mvc ×1
conflict ×1
file ×1
model ×1
open-source ×1
perl ×1
razor ×1
reflection ×1
sideloading ×1
types ×1
typescript ×1
windows-8 ×1