我正在寻找一种智能方法来将列表的值存储在hidden input
表单中,并在发布表单时将值返回到我的视图模型中。
在我的视图模型中,我有一个包含SelectListItem
项目的列表。该列表的使用方式与元素asp-items
中一样select
。现在,当用户关闭脚本并发布有错误的表单时,我想重新显示表单而不必重新创建列表。
属性看起来像:
public IReadOnlyCollection<SelectListItem> UserLevels { get; set; }
Run Code Online (Sandbox Code Playgroud)
在剃刀视图中,这不会正确保存 UserLevels 的值:
<input type="hidden" asp-for="UserLevels"/>
Run Code Online (Sandbox Code Playgroud)
我发现了这个关于类似问题的问题,但我没有找到一个很好的解决方案。有人知道存储列表值的聪明方法吗?
我们正开始将项目迁移到 blazor,但在将内容限制为仅登录用户时遇到了一些问题。
对于此测试,我们使用了标准 Visual Studio 2019 Blazor 服务器端项目模板,并启用了本地用户和帐户身份验证。
然后,我们将 App.razor 文件更改为以下内容:
<Router AppAssembly="@typeof(Program).Assembly">
<Found Context="routeData">
<AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)">
<NotAuthorized>
NOT AUTHORIZED!!!!!
</NotAuthorized>
<Authorizing>
AUTHORIZING!!!!!
</Authorizing>
</AuthorizeRouteView>
</Found>
<NotFound>
<CascadingAuthenticationState>
<LayoutView Layout="@typeof(MainLayout)">
<p>Sorry, there's nothing at this address.</p>
</LayoutView>
</CascadingAuthenticationState>
</NotFound>
Run Code Online (Sandbox Code Playgroud)
中的代码<NotAuthorized>
永远不会被击中,我已经确认浏览器上没有cookie,甚至也在私人浏览器窗口中尝试过。
我在另一个组件中注入了 HTTPContext 来查看当前用户发生了什么。当前用户不为空,它具有身份,但显示未经身份验证,并且没有预期的声明。
我在这里缺少什么吗?
好吧,这可能是非常基本的东西,但我花了很长时间才弄明白.我想有更多像我这样的.NET程序员,Monotouch和SQLite的新手都不知道这一点.
我将Ado.NET(System.Data)与Monotouch和SQLite一起使用.在SQLite中,每个表的每一行都有一个名为ROWID的64位有符号整数.您可以使用它,或者如果您愿意,可以使用INTEGER PRIMARY KEY AUTOINCREMENT指定一个字段,SQLite将链接到ROWID.
但是,如何在插入新记录后检索此字段的值?像Sql Server中的@@ identity关键字?
搜索我发现SQLite的iOS库有一个方法sqlite3_last_insert_rowid()来检索它,但在Mono.Data.Sqlite中没有相应的.在较旧的实现(Mono.Data.SqliteClient)中有一个LastInsertRowID()方法,但该方法在Mono.Data.Sqlite中消失了.为什么?
我正在开发一个使用大量反射的iOS/MonoTouch项目.一切都很好,但是当我编译Debug | iPhone版本时,我得到错误:
错误MT2002:无法解析引用:System.Boolean System.Reflection.PropertyInfo :: op_Equality(System.Reflection.PropertyInfo,System.Reflection.PropertyInfo)
有趣的是,Release | iPhone版本运行良好.
有什么不对?
更新Visual Studio 2017(包括Xamarin)后,我在几个Nuget包上收到错误,例如:
...\MSBuild\Xamarin\Xamarin.Apple.Sdk.targets(29,5):错误MSB4096:项目".... nuget\packages\HockeySDK.Xamarin\4.1.3\lib\Xamarin.iOS10\HockeySDK .dll"在项目列表中"ReferenceCopyLocalPaths"没有为元数据"ResolvedFrom"定义值.要使用此元数据,请通过指定%(ReferenceCopyLocalPaths.ResolvedFrom)来限定它,或者确保此列表中的所有项都定义此元数据的值.
只有在为Xamarin.iOS构建时才会出现此错误.适用于Android的构建工作正常.
有人知道如何解决这个问题吗?
有没有在MonoTouch项目中使用RedLaserSDK的例子?
当我尝试从 Visual Studio 创建存档以分发我的 Xamarin Android 应用程序时,存档管理器失败并显示以下消息:
“未能创建应用存档'MyCompanyName.Client.Droid'。指定的路径、文件名或两者都太长。完全限定的文件名必须少于 260 个字符,目录名必须少于 248 个字符。 ”
不幸的是,存档管理器没有说明是哪个文件导致了问题。
我已经尝试将项目和 nuget 包移动到根文件夹,但这没有帮助。
我有一些单元测试来验证使用 WeakReferences 的对象是否正常工作。将这些对象重构为异步工作后,单元测试失败。这似乎是由于使用异步时 GC.WaitForPendingFinalizers 不工作(或工作方式不同?)引起的。
为了检查这一点,我创建了一个带有两个按钮的简单 WPF 应用程序,一个具有常规单击事件,一个具有异步单击事件。
当我按下 NormalGCTest 按钮时,会显示“对象垃圾收集:True”。
但是当我按下 AsyncGCTest 按钮时,会显示“对象垃圾收集:False”。
到底是怎么回事?有没有办法在我的测试中强制进行完整的垃圾收集?
private void NormalGCTest(object sender, RoutedEventArgs e)
{
var temp1 = new object();
var temp2 = new WeakReference(temp1);
temp1 = null;
GC.Collect();
GC.WaitForPendingFinalizers();
temp1 = temp2.Target;
System.Diagnostics.Debug.WriteLine("object garbage collected: {0}", temp1 == null);
}
private async void AsyncGCTest(object sender, RoutedEventArgs e)
{
var temp1 = new object();
var temp2 = new WeakReference(temp1);
temp1 = null;
GC.Collect();
GC.WaitForPendingFinalizers();
temp1 = temp2.Target;
System.Diagnostics.Debug.WriteLine("object garbage collected: {0}", temp1 == …
Run Code Online (Sandbox Code Playgroud) 我想让用户可以更改我的应用程序中的语言.
这里描述了执行此操作的方法,在单触引代码中将首选语言设置为荷兰语,将备用语言设置为英语:
NSUserDefaults.StandardUserDefaults.SetValueForKey
(NSArray.FromStrings("nl", "en"), new NSString("AppleLanguages"));
Run Code Online (Sandbox Code Playgroud)
您必须重新启动应用程序才能生效.但是在iPhone 4上,关闭它时应用程序不会重新启动,它只是隐藏了.是否有办法强制应用程序在关闭后重新启动?
xamarin.ios ×5
c# ×3
asp.net-core ×2
ios ×2
.net ×1
async-await ×1
barcode ×1
blazor ×1
iphone ×1
mono ×1
sqlite ×1
wpf ×1