小编Jam*_*mes的帖子

什么是.NET中的ApplicationException?

为了抛出异常,我通常使用内置的异常类,例如ArgumentNullExceptionNotSupportedException.但是,有时我需要使用自定义异常,在这种情况下我写:

class SlippedOnABananaException : Exception { }
class ChokedOnAnAppleException : Exception { }
Run Code Online (Sandbox Code Playgroud)

等等.然后我在我的代码中抛出并捕获它们.但今天我遇到了ApplicationException全班 - 我应该使用它吗?这是为了什么?

拥有许多具有不同名称的有效相同的异常类似乎效率低下(我通常不需要任何单独的功能).但我不喜欢捕获泛型ApplicationException并且必须使用额外代码来确定错误是什么的想法.

哪里应该ApplicationException适合我的代码?

.net c# exception-handling exception

162
推荐指数
3
解决办法
4万
查看次数

ASP.NET控件呈现<div>

ASP.NET中的Label控件似乎呈现<span>标签,但是有一个服务器控件来呈现HTML <div>吗?

当然,我可以设置display: block,它可能看起来一样,但我宁愿不在跨越嵌套div.此外,我不想使用,<%= MyVariable %>因为这可能不会在回发上表现得很好.

有什么建议吗?

.net asp.net asp.net-controls asp.net-4.0

33
推荐指数
4
解决办法
7万
查看次数

UpdatePanel中ListView中的LinkBut​​ton导致完全回发

我在UpdatePanel的ListView中有一个LinkBut​​ton.我希望按钮(好吧,其中任何一个)导致部分回发,但它们会导致整页回发.

<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)

它没有什么区别......

还有一些其他类似的帖子,但我找不到解决方案!有任何想法吗?

c# asp.net ajax listview asp.net-ajax

28
推荐指数
1
解决办法
2万
查看次数

为什么这违反了类型约束?

我正在尝试自定义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

21
推荐指数
2
解决办法
3262
查看次数

对于一个或两个字符的字符串,哪个更有效:CHAR(2)还是VARCHAR(2)?

一个非常快的 - 在MySql中存储可能是一个或两个字符如CHAR(2)或VARCHAR(2)的数据更有效吗?

谢谢!

mysql database types

15
推荐指数
2
解决办法
5387
查看次数

身份cookie在一段时间后丢失自定义声明信息

我将自定义声明(例如用户的真实姓名)存储在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即将到期并在幕后重新发布,但我不知道为什么(或者如果)会发生.

asp.net cookies asp.net-identity

15
推荐指数
1
解决办法
1万
查看次数

TryParse为可空类型

我想尝试将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)

这是唯一的方法吗?

.net c# null nullable tryparse

14
推荐指数
2
解决办法
9651
查看次数

未获取EF的Azure网站连接字符串

我正在将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=&quot;data source=XXXX;initial catalog=XXXX;persist security info=True;user id=XXXX;password=XXXX;multipleactiveresultsets=True;application name=EntityFramework&quot;" 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"的连接字符串.

asp.net entity-framework azure azure-web-sites

11
推荐指数
1
解决办法
4377
查看次数

为什么要使用QueueBackgroundWorkItem异步?

使用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)

.net c# asp.net asynchronous async-await

11
推荐指数
1
解决办法
9351
查看次数

VS11拒绝了<script>中的Razor @if

以下标记是否不正确,或者它是MVC4中Razor引擎中的错误?无论哪种方式,最好的解决方法是什么?

显示View1.cshtml的全部内容.它编译得很好,但Intellisense错误突出显示很烦人.(包含在图像中,以便您可以看到VS11如何拒绝语法.)

标记突出显示

不接受@:语法(而不是<text></text>)的Hote .

syntax-highlighting visual-studio razor asp.net-mvc-4

10
推荐指数
1
解决办法
8667
查看次数