我正在尝试创建一个带有登录页面的应用程序作为第一页.
一旦用户登录,之后的页面将位于标准页面堆栈组织中,因此我可以轻松地使用构建Navigation对象并将所有内容包装在导航页面中.
例如
Login Page -> MainAppPage |-> Category1Page -> Cat1SubPage
|-> Category2Page -> Cat2SubPage
Run Code Online (Sandbox Code Playgroud)
我的理解是,我应该换MainAppPage用new NavigationPage(),然后我将有机会获得导航对象让我做这样的事情:
await this.Navigation.PushAsync(new Category1Page());
Run Code Online (Sandbox Code Playgroud)
并且各种平台将为我提供自动后退按钮支持以返回上一页.
但是我不希望用户以这种方式从LoginPage - > MainAppPage导航,因为我不希望后退按钮将它们带回Login,而没有他们明确地点击注销按钮.
那么我应该如何处理来自LoginPage - > MainApp Page的第一页转换.
是否有另外两种方法可以Primary在它们之间进行交换?或者有没有办法拦截MainAppPage上的后退按钮请求并丢弃它们?
没有在文档中找到关于此的大量信息,但它似乎是一个相当标准的要求,所以可能是PEBKAC
这更像是学术上的好奇心,但我想弄清楚如何最好地完成以下内容.
想象一下你有一个Person物体的情况
public class Person {
public string Name {get;set;}
public int Age {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
和一个从一些持久性存储中检索它们的存储库合同......
public class IPersonRepository {
public IEnumerable<Person> Search(*** SOME_METHOD_SIGNATURE ***);
}
Run Code Online (Sandbox Code Playgroud)
您的消费者应用程序实际上并不关心具体实现.它只是从Unity/Ninject中获取正确的具体实现并开始查询.
IPersonRespository repo = GetConcreteImplementationFromConfig();
repo.Search( ... );
Run Code Online (Sandbox Code Playgroud)
我想知道的是,你在这里使用的方法签名将是什么,无论实现如何,它都具有灵活性和可扩展性.
选项1.
public IEnumerable<Person> Search(Expression<Func<Person, bool>> expression);
Run Code Online (Sandbox Code Playgroud)
这很好,因为如果你使用LINQ Capable(例如EntityFramework)数据上下文,你可以直接将表达式传递给你的上下文.如果你的实现必须使用手工制作的存储过程/ sql/ADO.NET等,这个选项似乎就会失败...
选项2.
public IEnumerable<Person> Search(PersonSearch parameters);
public class PersonSearch {
public int? Age {get;set;}
public string FullName {get;set;}
public string PartialName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这个看起来最灵活(在某种意义上它可以与Linq,Plain Old SQL一起使用).
但它只是"编写自己的查询语言"的臭味,因为您需要考虑消费者可能想要做的每一个可能的查询.例如,年龄> = 18 &&年龄<= 65 &&名字喜欢'%John%' …
我只是在研究如何在Azure上构建一个大规模,全局可访问的应用程序.
那里已经有很多技术可以让你的应用程序尽可能贴近消费者.
我有点困惑的是数据库.如果您使用的是SQL Azure,则必须指定一个区域来放置它.如果我的SQL Azure实例位于西欧(阿姆斯特丹),但我的客户位于澳大利亚,并通过澳大利亚(NSW)的实例访问该应用程序,应用程序与数据库通信之间会有一些延迟.
我见过的有关Geo Replication的所有参考资料似乎都在主从冗余设置的上下文中.但是我想知道是否可以使用Master-Master设置,其中每个应用程序实例在同一个Geo-Region中与它自己的SQL Azure主实例进行对话,然后sql azure会处理它们之间的双向复制.
这是来自这里提出的另一个问题,但我认为这可能是一种"最佳实践"方法.
在设计网站时,设计师很可能会为网站中的所有元素组合一组通用样式.(Div/Spans/H1/H2s中文本的标准字体)
在表的情况下,它们可能也定义了默认的站点范围边界和对齐...例如
Table
{
border: dashed 1px #333333;
padding: 2px;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果表中有一个表(来自RSolberg的示例,DataGrid中的AJAX日历),那么您的父表和嵌套表都将继承这些样式.(假设这就是为什么他们被称为Cascading)
我的问题是将样式应用于最顶层元素的最佳实践是什么,而没有子元素也继承它们.
你应该只提供一个覆盖来撤消你应用的任何样式.
例如
Table
{
border: dashed 1px #333333;
padding: 2px;
}
Table Table
{
border: solid 0px #000000;
padding: 0px;
}
Run Code Online (Sandbox Code Playgroud) 我们正在构建一个新的Web应用程序堆栈.后端功能将基于服务,但由于其中一些服务需要暴露给公共互联网,我需要保护它们.我使用标准成员资格/角色提供程序模型锁定服务URL部分成功.我在那一刻遇到麻烦的部分是,如果我们要在我们的服务堆栈上构建一个iOS(或Android)应用程序,我们将如何处理安全性?
我完全乐于接受建议.到目前为止,我已在下面的设置中包含了一些信息.
ASP.NET网站使用在HTTPS连接上运行的SQL成员资格/角色提供程序/表单身份验证.只有Default/Login/FAQ页面可以公开访问.所有其他页面都位于名为"/ Secure"的文件夹中,需要您进行身份验证.
WCF WebService.所有支持的功能都通过此服务提供.端点仅在本地Intranet上可用.ASP.NET网站代码背后使用标准服务参考与服务进行对话.
WCF REST/JSON服务.上述某些功能在WCF REST/JSON服务中重新包装.这是使用" WCF REST模板40 "设置的.然后使用System.Web.Routing将服务路由到"/ Secure/jsonsvc/*".因为它位于/ Secure文件夹下,所以它继承了任何请求的membership/roleprovider安全性.例如,xmlhttp从客户端JQuery小部件调用此服务,仅适用于已登录我们网站的用户.
将来,外部应用程序(例如IPad应用程序)可能需要使用这些相同的WCF Rest/JSON服务.鉴于缺少HTTP站点/会话/登录上下文,最好的方法是什么?
我需要一些c#代码来选择/取消选择WPF 3.5框架中数据网格中的所有复选框.我想通过单击网格中的单个标题复选框来完成此操作.
请帮忙.
我正在尝试将从第三方.NET Lib获得的一些对象序列化为XML文件.
当我Go To Definition为对象时,该对象的某些属性被标记为[XMLIgnore]
有没有办法告诉我System.Xml.Serialization.XmlSerializer忽略一些属性具有该属性并且应该序列化对象中的所有内容的事实.
我可能获得源代码并重新编译它没有XMLIgnore属性,但如果XmlSerializer有一些很好的覆盖属性,它会很好
XmlSerializer xmls = new XmlSerializer(
typeof(MyObject),
Settings.DoNotApplyXMLAttributeRules
);
Run Code Online (Sandbox Code Playgroud)
提前致谢
编辑
已按照建议尝试了XmlAttributeOverrides但没有太多的乐趣.这是对象定义(来自FlickrAPI的照片)
[Serializable]
public class Photo
{
//Some code omitted
[XmlIgnore]
public string LargeUrl { get; }
}
Run Code Online (Sandbox Code Playgroud)
继承了我写过的序列化代码......仍然无效......
XmlWriter xtw = XmlWriter.Create( Server.MapPath("~/App_Data/Data.xml") );
XmlAttributes photoAttributes = new XmlAttributes();
photoAttributes.XmlIgnore = false;
XmlAttributeOverrides photoOverrides = new XmlAttributeOverrides();
photoOverrides.Add(typeof(Photo), "LargeUrl", photoAttributes);
XmlSerializer xmlphoto = new XmlSerializer(typeof(Photo), photoOverrides);
Run Code Online (Sandbox Code Playgroud) 我的生产应用程序有一个Premium P2 SQL Azure数据库,出于安全考虑,我创建了数据库特定模式/视图/角色以及用于从SSRS查询中读取数据的特定数据库用户帐户.
让我们只是调用服务器PRIMARY和我的数据库MyApp
这个的安装脚本如下.
-- On Primary Master
CREATE LOGIN ssrsuser WITH password='******'
-- On Primary MyApp
CREATE USER ssrsuser FOR LOGIN ssrsuser
CREATE ROLE [ssrsreader] AUTHORIZATION [db_owner]
GRANT SELECT ON SCHEMA :: [App] TO [ssrsreader]
GRANT SELECT ON SCHEMA :: [Reports] TO [ssrsreader]
EXEC sp_addrolemember 'ssrsreader', 'ssrsuser'
Run Code Online (Sandbox Code Playgroud)
因此,我们的用户对Prod数据库施加了很多负载,我们认为是时候将报告功能移到辅助同步从数据库了.
由于我们使用的是SQL Azure Premium层,因此我们可以使用只读辅助副本启用Active Geo-Replication.实际上MS甚至说它适用于只读工作负载,例如报告.
所以我设置了SECONDARY服务器,启用了播种,它现在已经完成,我可以使用SECONDARY管理员用户和密码访问只读副本.
但是SECONDARY服务器没有登录,ssrsuser而我可以创建一个SECONDARY.master,我不能DROP RECREATE用户,因为SECONDARY.MyApp数据库处于只读模式.
有没有其他方法来解决这个问题.我真的不想将SECONDARY服务器管理员用户和密码放入SSRS连接字符串.
sql-server azure reporting-services geo-replication azure-sql-database
我们有许多DTSX软件包,它们从许多传统的Pervasive Databases - > SQL Server 2k8 R2中提取 - 转换 - 加载数据.(通过ODBC)
我们的大部分ETL过程都是T-SQL脚本
遗留数据是一个结构严重的混乱,最常见的是,我们对ETL脚本进行的调整和更改是为了处理这种格式错误的数据.
我们想要做的是设置一些流程来自动测试执行这些转换的SPROCS/Scripts.
我们自己想出的是:
只是想知道是否还有其他进程/系统/数据库测试应用程序,我们也应该考虑.
我有一个遗留数据库,我想与Entity Framework进行交互.
数据库高度标准化,用于存储有关航班的信息.为了更容易使用某些数据,已经编写了许多SQL视图来展平数据并将某些多表连接转换为更多逻辑信息.
快速浏览一下后,我发现在EF中使用Views有两个问题.
视图包含大量的键.一些快速谷歌搜索似乎表明我将需要手动编辑EDMX文件以删除此信息.
视图与其他表实体没有任何关系.需要手动添加这些关联才能链接视图 - >表.
当DBA团队进行更改时,从DB中刷新模型时,这两者似乎都是主要的难点.
这是您在使用EF时需要"忍受"的东西,还是有任何建议的模式/做法来处理这些问题.