为了抛出异常,我通常使用内置的异常类,例如ArgumentNullException和NotSupportedException.但是,有时我需要使用自定义异常,在这种情况下我写:
class SlippedOnABananaException : Exception { }
class ChokedOnAnAppleException : Exception { }
Run Code Online (Sandbox Code Playgroud)
等等.然后我在我的代码中抛出并捕获它们.但今天我遇到了ApplicationException全班 - 我应该使用它吗?这是为了什么?
拥有许多具有不同名称的有效相同的异常类似乎效率低下(我通常不需要任何单独的功能).但我不喜欢捕获泛型ApplicationException并且必须使用额外代码来确定错误是什么的想法.
哪里应该ApplicationException适合我的代码?
ASP.NET中的Label控件似乎呈现<span>标签,但是有一个服务器控件来呈现HTML <div>吗?
当然,我可以设置display: block,它可能看起来一样,但我宁愿不在跨越嵌套div.此外,我不想使用,<%= MyVariable %>因为这可能不会在回发上表现得很好.
有什么建议吗?
我在UpdatePanel的ListView中有一个LinkButton.我希望按钮(好吧,其中任何一个)导致部分回发,但它们会导致整页回发.
<asp:UpdatePanel ID="upOutcomes" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:ListView ID="lvTargets" runat="server" onitemdatabound="lvTargets_ItemDataBound">
<ItemTemplate>
<asp:LinkButton ID="lnkAddTarget" CssClass="lo" Text='<%# Eval("Title") + " <b>" + Eval("Level") + Eval("SubLevel") + "</b>" %>' runat="server"></asp:LinkButton>
</ItemTemplate>
</asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
我在stackoverflow上发现了另一篇帖子,建议添加:
protected void lvTargets_ItemDataBound(object sender, ListViewItemEventArgs e) {
var lb = e.Item.FindControl("lnkAddTarget") as LinkButton;
tsm.RegisterAsyncPostBackControl(lb); // ToolkitScriptManager
}
Run Code Online (Sandbox Code Playgroud)
它没有什么区别......
还有一些其他类似的帖子,但我找不到解决方案!有任何想法吗?
我正在尝试自定义ASP.NET Identity 3,以便它使用整数键:
public class ApplicationUserLogin : IdentityUserLogin<int> { }
public class ApplicationUserRole : IdentityUserRole<int> { }
public class ApplicationUserClaim : IdentityUserClaim<int> { }
public sealed class ApplicationRole : IdentityRole<int>
{
public ApplicationRole() { }
public ApplicationRole(string name) { Name = name; }
}
public class ApplicationUserStore : UserStore<ApplicationUser, ApplicationRole, ApplicationDbContext, int>
{
public ApplicationUserStore(ApplicationDbContext context) : base(context) { }
}
public class ApplicationRoleStore : RoleStore<ApplicationRole, ApplicationDbContext, int>
{
public ApplicationRoleStore(ApplicationDbContext context) : base(context) { }
}
public class ApplicationUser …Run Code Online (Sandbox Code Playgroud) asp.net type-constraints asp.net-identity asp.net-identity-3
一个非常快的 - 在MySql中存储可能是一个或两个字符如CHAR(2)或VARCHAR(2)的数据更有效吗?
谢谢!
我将自定义声明(例如用户的真实姓名)存储在ASP.NET标识cookie中,以避免对每个请求进行不必要的数据库查询.至少这是我假设这段代码正在做的事情:
var identity = await user.GenerateUserIdentityAsync(UserManager);
identity.AddClaim(new Claim(ClaimTypes.GivenName, user.FirstName)));
// etc.
AuthenticationManager.SignIn(new AuthenticationProperties {IsPersistent=true}, identity);
Run Code Online (Sandbox Code Playgroud)
这很好用,我可以用以下方法检索这些声明:
private static string GetClaim(string claimType)
{
var identity = (ClaimsPrincipal) Thread.CurrentPrincipal;
var claim = identity.Claims.SingleOrDefault(o => o.Type == claimType);
return claim == null ? null : claim.Value;
}
Run Code Online (Sandbox Code Playgroud)
identity.Claims如预期,该属性包含以下声明:
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier: ced2d16c-cb6c-4af0-ad5a-09df14dc8207
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name: me@example.com
http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider: ASP.NET Identity
AspNet.Identity.SecurityStamp: 284c648c-9cc7-4321-b0ce-8a347cd5bcbf
http://schemas.microsoft.com/ws/2008/06/identity/claims/role: Admin
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname: My Name
Run Code Online (Sandbox Code Playgroud)
问题是,经过一段时间(通常是几个小时)后,我的自定义声明似乎消失了 - 在此示例中,givenname枚举中不再存在.用户仍然经过身份验证,并且所有默认声明仍然存在.
发生了什么,我该如何解决这个问题?我唯一能想到的是cookie即将到期并在幕后重新发布,但我不知道为什么(或者如果)会发生.
我想尝试将a解析string为a DateTime?,如果失败则将值设置为null.我能想到的唯一方法就是如下,但它看起来并不是很整洁.
DateTime temp;
DateTime? whatIActuallyWant = null;
if (DateTime.TryParse(txtDate.Text, out temp)) whatIActuallyWant = temp;
Run Code Online (Sandbox Code Playgroud)
这是唯一的方法吗?
我正在将ASP.NET Web应用程序部署到Azure Web站点.
该站点使用实体框架,当我在Web.config其中包含以下内容时运行正常:
<connectionStrings>
<add name="DataContext" connectionString="metadata=res://*/Models.WpsData.csdl|res://*/Models.WpsData.ssdl|res://*/Models.WpsData.msl;provider=System.Data.SqlClient;provider connection string="data source=XXXX;initial catalog=XXXX;persist security info=True;user id=XXXX;password=XXXX;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
但是,如果删除此连接字符串并通过Azure管理门户指定,则会发生错误.
Name: DataContext
Value: metadata=res://*/Models.WpsData.csdl|res://*/Models.WpsData.ssdl|res://*/Models.WpsData.msl;provider=System.Data.SqlClient;provider connection string="data source=XXXX;initial catalog=XXXX;persist security info=True;user id=XXXX;password=XXXX;multipleactiveresultsets=True;application name=EntityFramework"
Type: Custom
Run Code Online (Sandbox Code Playgroud)
这会导致错误:在应用程序配置文件中找不到名为"DataContext"的连接字符串.
使用asyncASP.NET QueueBackgroundWorkItem方法有什么好处?
HostingEnvironment.QueueBackgroundWorkItem(async cancellationToken =>
{
var result = await LongRunningMethodAsync();
// etc.
});
Run Code Online (Sandbox Code Playgroud)
我的理解是异步函数用于防止长时间运行的任务阻塞主线程.但是,在这种情况下,我们不是在自己的线程中执行任务吗?与非异步版本相比有什么优势:
HostingEnvironment.QueueBackgroundWorkItem(cancellationToken =>
{
var result = LongRunningMethod();
// etc.
});
Run Code Online (Sandbox Code Playgroud) 以下标记是否不正确,或者它是MVC4中Razor引擎中的错误?无论哪种方式,最好的解决方法是什么?
显示View1.cshtml的全部内容.它编译得很好,但Intellisense错误突出显示很烦人.(包含在图像中,以便您可以看到VS11如何拒绝语法.)

不接受@:语法(而不是<text></text>)的Hote .
asp.net ×6
.net ×4
c# ×4
ajax ×1
asp.net-4.0 ×1
asp.net-ajax ×1
async-await ×1
asynchronous ×1
azure ×1
cookies ×1
database ×1
exception ×1
listview ×1
mysql ×1
null ×1
nullable ×1
razor ×1
tryparse ×1
types ×1