我正在使用Visual Studio 2012,刚刚安装了"Microsoft ASP.NET和Web Frameworks 2013.1 - Visual Studio".
正如所料,它添加了创建一个选项"ASP.NET MVC 5 Empty Project"
.问题是,我认为没有像我在使用MVC 4时那样启动已经正常运行的"基础应用程序"(例如"Asp.NET MVC 4 Web Application"
).我只看到一个空模板.
我见过如下答案:
并就此事发现了这篇文章.
这显然不是一个显示阻止,因为我总是可以从头开始创建应用程序,但我仍然想知道是否有可能在VS 2012上实现这一点.我是否错过了一步,或者我是否需要VS 2013 for那?一个功能齐全的Web应用程序模板(带有身份验证等)可以很好地涉及MVC 5的新功能或原型设计.
asp.net-mvc asp.net-mvc-4 visual-studio-2012 visual-studio-2013 asp.net-mvc-5
我有一个ASP .NET MVC5应用程序,我没有使用Windows身份验证.
一切都工作正常,直到我尝试在开发它的域之外运行应用程序,并且(无论出于何种原因)得到了:
The trust relationship between this workstation and the primary domain failed.
Run Code Online (Sandbox Code Playgroud)
当我想要做的时候User.IsInRole("Admin")
.
我使用自定义的Identity
,Role
,IdentityStore
,RoleStore
,等从.NET的Identity
,我可以看到用户和角色数据被从(MongoDB的)数据库中检索正确.
关于这个问题有很多问题,但是他们来自想要使用Windows Auth的人.和模仿他们的MVC应用程序:
那么,SystemException
如果我没有使用Active Directory并且(据我所知)没有做任何可能取决于PC域的事情,我为什么要得到这个呢?我错过了一些配置(在我的Web.config
或IIS Express中)?
好的,所以缩小了一点......
我的User.IsInRole("Admin")
行在if()
我的_Layout.cshtml
视图中的一个声明中(即,知道在导航栏中显示什么,取决于角色).
我现在知道在没有用户进行身份验证时我只得到上面的错误,而且我不在我用于dev的域中.如果我在该行上放置一个断点,我可以看到该User
对象是a System.Security.Principal.WindowsIdentity
,它的底层Identity
是System.Security.Principal.WindowsIdentity
.
另一方面,如果用户被认证,则User
对象和ts Identity
是System.Security.Claims.ClaimsPrincipal
和System.Security.Claims.ClaimsIdentity
.
为什么它根本使用Windows身份(未经身份验证时)以及如何禁用它?
OutOfMemoryErrors
即使在确保我的所有位图都已正确缩放之后,我也一直面临着一些烦人的问题.事实上,这个问题似乎与Bitmaps根本没有关系,但我可能错了.
出于测试和错误隔离的目的,我一直在使用导航抽屉(不使用后退按钮)在两个活动之间切换(让我们称之为Main和List).我可以在DDMS中看到每次返回时分配的内存增加大约180 KB.
我已完成内存转储并使用eclipse MAT分析3个不同的时间点:
我怀疑内存泄漏,但我无法找到原因.根据内存转储,它看起来像是"剩余"并且java.lang.FinalizerReference
不断增加.这个问题的用户在FinalizerReferences
他的内存转储中也有很多,但答案还不是很清楚.
我在最后一个时间点提出的泄漏嫌疑人报告并不是很有帮助,因为它怀疑android.content.res.Resources
并且android.graphics.Bitmap
随着时间的推移似乎没有增长:
在其中一份报告中(遗憾的是,这里没有),我看到13个被android.widget.ListView
指出为潜在泄密嫌疑人的实例.
这些内存增加发生在活动之间的任何转换(不仅仅是本例中使用的Main和List).
如何找到(非显而易见的?)内存泄漏?我一直在摸不着头脑,所以任何帮助和提示都会很棒.
位图(@ OrhanC1):我已经评论Bitmap
了上面提到的两个活动中的任何实例,内存仍在增加.内存转储仍显示一些位图,但我相信它们与资源有关,而不是我分配的实际位图.
关于自定义字体(@erakitin):我正在使用它们,但我使用单例Typeface
在我的Application
上下文(public class MyApp extends Application
)中保留每个字体的单个实例.我已经尝试评论上面提到的两个活动中对字体的任何引用,内存仍然增加.
我不认为我正在泄漏Context
(@DigCamara):我没有在这两个活动中持有任何静态引用,我使用Application
上下文而不是Activity
在适配器中的's.如果我保持相同Activity
并进行一些屏幕旋转,则内存不会增加.
基于@ NickT的评论:我可以看到我有两个活动的很多实例.这些内存增加是否只是后端堆栈活动数量增加而不是内存泄漏的结果(虽然操作系统处理的内容显然没有)?如果我使用FLAG_ACTIVITY_REORDER_TO_FRONT
intent标志,那么内存只会增加,直到所有不同的活动都被实例化(一次).这个问题很有用:当内存不足时,Android不会从堆栈中查杀活动.
我正在尝试将照片设置为背景Activity
.我希望背景是一个全屏图像(没有边框).
因为我希望图像在没有拉伸/挤压的情况下填充整个活动的背景(即X和Y的不成比例的缩放)并且我不介意是否必须裁剪照片,我正在使用RelativeLayout
带有ImageView
(带android:scaleType="centerCrop"
)和我的布局的其余部分由a ScrollView
和它的孩子组成.
<!-- Tried this with a FrameLayout as well... -->
<RelativeLayout>
<!-- Background -->
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"/>
<!-- Form -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView>
<LinearLayout>
...
<EditText/>
</LinearLayout>
</ScrollView>
</LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
问题是布局的其余部分有一些EditText
视图,当软键盘出现时,ImageView会重新调整大小.我希望背景保持不变,无论软键盘是否可见.
我已经看到很多关于ImageViews被重新调整大小的问题但是(imo)没有令人满意的答案.其中大多数只是设置android:windowSoftInputMode="adjustPan"
- 这并不总是实用的,特别是如果您希望用户能够滚动活动 - 或使用getWindow().setBackgroundDrawable()
不裁剪图像.
我已经设法将ImageView子类化并覆盖它onMeasure()
(请参阅我的答案:当键盘打开时ImageView调整大小)以便它可以强制固定的高度和宽度 - 等于设备的屏幕尺寸 - 根据标志但我是想知道是否有更好的方法来实现我想要的结果.
总而言之,我的问题是:如何将活动的背景设置为全屏照片
使用scale type ="centerCrop",使照片均匀缩放(保持其纵横比),因此两个尺寸(宽度和高度)将等于或大于视图的相应尺寸;
弹出软键盘时不会调整大小;
回答:
我最后关注了@pskink的建议和子类BitmapDrawable
(见下面的答案).我不得不做一些调整,以确保BackgroundBitmapDrawable …
java android android-layout android-imageview background-drawable
我正在尝试编写一个数据库大小的查询结果分页.正如SQL Server 2012所提供的OFFSET/FETCH
,我正在使用它.但是在我将语句添加到查询后,需要花费10倍的时间.
查询:
SELECT
p.ShopId,
count(1) as ProductsQuantity,
MIN(LastPrice) as MinPrice,
MAX(LastPrice) as MaxPrice
FROM Product2 p WITH (NOLOCK)
INNER JOIN
CONTAINSTABLE(Product2, ProductName, 'czarny') AS KEY_TBL
ON KEY_TBL.[key]=p.Id
WHERE
(p.LastStatus > 0 OR p.LastStatus = -1)
GROUP BY p.ShopId
ORDER BY p.ShopId asc
SELECT
p.ShopId,
count(1) as ProductsQuantity,
MIN(LastPrice) as MinPrice,
MAX(LastPrice) as MaxPrice
FROM Product2 p WITH (NOLOCK)
INNER JOIN
CONTAINSTABLE(Product2, ProductName, 'czarny') AS KEY_TBL
ON KEY_TBL.[key]=p.Id
WHERE
(p.LastStatus > 0 OR p.LastStatus = -1)
GROUP …
Run Code Online (Sandbox Code Playgroud) 我有一个包含ViewPager的Activity,它显示N个片段.每个片段都在我的ViewPager的自定义适配器(extends FragmentStatePagerAdapter
)中显示ArrayList中对象的属性.
该片段具有(除其他外)一个按钮,该按钮应该移除当前显示的片段并滚动到下一个片段,setCurrentItem(position, true)
以便如果用户向后滚动,则前一个项目消失.我通过使用这样的东西(简化)这样做:
deleteButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
MyActivity parentActivity = (MyActivity)getActivity();
// First, scroll to next item (smoothly)
parentActivity.pager.setCurrentItem(parentActivity.pager.getCurrentItem()+1, true);
// Database stuff...
doSomeDBOperations();
// Method in Activity that removes the current object (I believe this method is working fine and yes, it calls notifyDataSetChanged())
parent.removeObject(currentObject);
}
});
Run Code Online (Sandbox Code Playgroud)
这具有所需的行为,因为按下删除按钮的片段所代表的对象将被删除,并且viewpager将转到下一页.
我的问题是ViewPager不能平滑滚动,而是"立即跳转"到下一个片段.如果我对removeObject()
通话进行评论,则平滑滚动有效(但不删除该项目).我相信它与removeObject()
setCurrentItem()完成平滑滚动动画之前调用有关?
有关如何解决此问题并实现项目删除+平滑滚动的任何想法?如果我的假设是正确的,我怎样才能确保在删除对象之前完成平滑滚动?
编辑1:
我的假设似乎是对的.如果我把parent.removeObject(currentObject)
里面
// ...inside the previously shown public void onClick(View v)...
confirm.postDelayed(new Runnable() { …
Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager fragmentpageradapter
我正在开发一个.NET Web服务,同时尝试维护一个分层架构,使我的模型在一个项目中保存,而DB访问(DAL)在另一个项目中.这背后的想法是,如果我必须更改数据库技术,只需创建一个不同的DAL,而应用程序的其余部分保持不变.
在我正在开发的数据访问层中,我使用的是 Mongo DB C#Driver.
我见过:
名为"ID"的属性将由C#驱动程序映射为数据库的"_id"(约定优于配置);
Mong +DB中的Int +自动增量不是一个好主意 ;
在MongoDB中使用Guid作为ID 也不是一个好主意 ;
MongoDB中存储的文档ID的推荐数据类型是ObjectID
.C#驱动程序提供了一个表示它的类;
MongoDB.Bson
在我的模型中使用此数据类型(from ),那么它们将依赖于MongoDB C#驱动程序,我不希望这样:我希望我的模型与数据库无关; 只有我的DAL可以依赖于我使用的任何数据访问技术.那么我应该将哪种数据类型用于我的POCO ID以保证数据库中的唯一性?Guid的字符串表示在性能方面是否可怕?
欢迎您的反馈.
我正在尝试在我的数据模型(实体框架6,代码优先方法)中实现异构关联.
我有一个现有的类结构,让我们称之为Tree
,Branch
和Leaf
.A Tree
可以有许多Branch
对象,并且Branch
可以包含许多Leaf
对象.三个级别之间的关系具有cascade-delete
行为(删除分支,您还删除叶子等).
现在,我试图让用户在每个级别上添加类似注释的对象.我有一些与数据建模有关的问题,因为我希望3种实体类型中的每一种都能够有很多注释,每条注释都属于一个且只有一个条目.我也希望所有评论都在同一张表中.我尝试了两种不同的方法:
实现继承使得Comment
(摘要)可以是一个TreeComment
,BranchComment
或者LeafComment
,下面的每层次结构表(TPH)的方法(如看到的那样,例如,在这里),其具有一个抽象类(的Comment
征求意见),然后将其导出到TreeComment
,BranchComment
等这是通过编码这样的模型来实现的:
public abstract class Comment
{
// ID
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID { get; set; }
}
public class TreeComment: Comment
{
// Foreign Keys
public Guid TreeID { get; set; }
// Navigation Properties
public virtual Tree …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在ActionBar
标签的标题上设置自定义字体.
我看到更多的开发者,要求以适当的方法等做这个的(例如,如何自定义操作栏标签的字体和如何(如果可能的话),我可以设置选项卡上的文字动作条自定义字体,在我的资产字体文件夹?)但没有答案.
到目前为止,我遵循了两种方法:
1)第一个受到这个SO问题的启发,包括为每个标签膨胀自定义布局:
LayoutInflater inflater = LayoutInflater.from(this);
View customView = inflater.inflate(R.layout.tab_title, null); // a custom layout for the tab title, basically contains a textview...
TextView titleTV = (TextView) customView.findViewById(R.id.action_custom_title);
titleTV.setText(mSectionsPagerAdapter.getPageTitle(i));
titleTV.setGravity(Gravity.CENTER_VERTICAL);
titleTV.setTypeface(((MyApp) getApplicationContext()).getCustomTypeface());
// ...Here I could also add any other styling I wanted to...
actionBar.getTabAt(i).setCustomView(customView);
Run Code Online (Sandbox Code Playgroud)
这看起来不是一个非常好的方法,因为如果选项卡+操作不适合横向模式下的ActionBar,则选项卡标题将显示在溢出列表(Spinner/Drop-down)中,但所选值显示为空.当您单击此列表的项目时,所有这些视图都会消失.当例如用户扩展搜索动作视图时导致android将标签显示为下拉列表时,这尤其令人讨厌.
2)我尝试了另一种方法,如本文所示,涉及使用SpannableString
但字体不会更改为我的自定义字体.
SpannableString s = new SpannableString(mSectionsPagerAdapter.getPageTitle(i));
s.setSpan(new TypefaceSpan(this, "FontName.ttf"), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
actionBar.addTab(actionBar.newTab().setText(s).setTabListener(this));
Run Code Online (Sandbox Code Playgroud)
Class TypefaceSpan可以在这里看到. …
非常简单的问题,不需要太多代码:
我正在使用Android的默认ActionBar(没有Sherlock),其中我有几个MenuItems.其中一个是android:showAsAction="collapseActionView|always"
针对您的典型搜索场景的可折叠Action View():用户点击图标→搜索框展开→当用户键入任何内容时,onQueryTextChange会发挥其魔力).
SearchView sv = new SearchView(this);
sv.setLayoutParams(new ActionBar.LayoutParams(Gravity.RIGHT));
// Yada, yada...
sv.setOnQueryTextListener(new OnQueryTextListener() {
// The methods for onQueryTextSubmit and onQueryTextChange ... they apply filtering on the activity's list adapter and apparently work fine
}
menuItem.setActionView(sv); // menuItem is the item for the search action
searchAnswers.setOnActionExpandListener(new OnActionExpandListener() {
// The listener's methods for expand/collapse as I need some business logic behind them
}
Run Code Online (Sandbox Code Playgroud)
所有上述工作都很好.
当设备处于纵向模式并且屏幕空间有限时,SearchView几乎占据整个操作栏,隐藏其他MenuItems(有android:showAsAction="ifRoom"
)以及Activity的标题,这对我来说是可以的.
问题是,如果设备处于横向模式(因此仍然有免费的ActionBar空间),SearchView不会占用整个ActionBar(再次,我很好),但Activity的标题消失了(即使有足够的空间在哪里它可以显示!).所以我的问题是我得到了这个空白的空间,可以显示Activity的标题.
在扩展之前:
扩展后:
(这两个截图都来自横向模式的手机.使用Android 4.0.4和4.3进行测试.)
有足够空间时如何保持活动标题的任何提示?
android ×5
java ×4
asp.net-mvc ×3
asp.net ×2
c# ×2
sql-server ×2
bitmap ×1
memory-leaks ×1
mongodb ×1
sql ×1
t-sql ×1
tabs ×1