小编tra*_*max的帖子

ASP.NET MVC 当前请求 url(ajax 调用问题)

我使用流行的技术“ReturnUrl”。我将当前页面的 url 传递给服务器,做一些工作,然后我将用户重定向回这个 url。例如,用户发表评论,然后返回到这个 url。

@using (Html.BeginForm("AddUserComment", "Home", new { returnUrl = HttpContext.Current.Request.RawUrl }, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
...
}
Run Code Online (Sandbox Code Playgroud)

但是,当我通过 ajax 调用加载此表单时,如下所示:

$.ajax({
        type: 'GET',
        url: '/Home/ShowUserCommentsBlock/',
        data: { entityType: entityType, entityId: entityId },
        cache: false,
        ...
    });
Run Code Online (Sandbox Code Playgroud)

HttpContext.Current.Request.RawUrl返回 ajax 请求 url "/Home/ShowUserCommentsBlock?entityType=...",但我需要当前页面 url,其中调用 ajax 请求。我应该用什么代替HttpContext对象?

asp.net ajax asp.net-mvc

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

为什么这个SQL有效?

我的同事用一个我认为实际上应该失败的工作SQL使我感到困惑.

  • [IdentityUserRoles]:列RoleId,UserId;
  • [IdentityRoles]:列Id,Name;

执行的SQL有效:

Delete from IdentityUserRoles where RoleId in ( 
   Select RoleId 
   FROM [dbo].[IdentityRoles] 
   where Name in ('TeamManager','Manager')
)
Run Code Online (Sandbox Code Playgroud)

它看起来是合法的,但如果你仔细查看子查询,表IdentityRoles没有RoleId列,它应该是Id.

所以,如果我单独运行子查询:

Select RoleId 
FROM [dbo].[IdentityRoles] 
where Name in ('TeamManager','Manager')
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

消息207,级别16,状态1,行1
无效的列名称"RoleId".

这是预期的,因为列RoleId确实不存在.

问题是,如果子查询包含语法错误,为什么父查询会继续执行?

我在SQL Server 2012 Express Edition(v11.0.5058.0)中运行它

更新 使此查询工作 - 没问题.问题是为什么它首先起作用并且没有抛出语法错误.

sql sql-server sql-server-2012

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

仅当当前值大于先前值时 MSSQL 才会更新

我有包含字段 id、studentname、highestmarks 的数据库

现在学生获得了新分数,我想用新分数更新数据库,但前提是新分数大于字段“highestmarks”中存储的值,否则我不想更新。

在 MySQL 中,这可以使用 GREATER 函数来实现,但我不知道 MS-SQL

sql sql-server sql-server-2008

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

如何设置IdentityResult?

我需要使用一些更复杂的规则来验证新的(或更新的)用户的电子邮件地址.

我想过使用进入用户管理器的用户存储,但是IdentityResult在何处以及如何构建?

我只是抛出一个例外,就是这样吗?或者是否有一些额外的验证机制?

asp.net-identity usermanager

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

在Azure存储操作上设置超时

使用Azure存储时,我发现如果您使用REST,有一种方法可以在blob操作表操作设置超时.

但是我们正在使用通过WindowsAzure.Storage NuGet包(v8.4.0)提供的C#客户端.我在这里看不到任何指定超时的方法

var storageAccount = CloudStorageAccount.Parse("UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://127.0.0.1"); // local storage for testing
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("mycontainer");
container.CreateIfNotExists();
var blobReference = container.GetBlockBlobReference("my/blob.pdf");
Run Code Online (Sandbox Code Playgroud)

我已经尝试了查看可用属性/方法的CloudBlobClient内容StorageAccount,但没有找到类似超时设置的内容.

如果我可以在一个地方设置timout(在连接字符串中)并且在所有操作中使用它,那将是理想的.但是我如何在C#客户端中执行此操作?

c# azure azure-storage azure-table-storage azure-blob-storage

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

在身份asp mvc中找到用户角色

我正在使用此代码进行登录.用户登录时如何找到用户角色?

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    {

        if (!ModelState.IsValid)
        {
            return View(model);
        }
        var user = await UserManager.FindByNameAsync(model.Username);
        if (user != null)
        {
            if (!await UserManager.IsEmailConfirmedAsync(user.Id))
            {
                ViewBag.errorMessage = "You must have a confirmed email to log on.";
                return View("Error");
            }
        }
        var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberMe, shouldLockout: false);
        switch (result)
        {
            case SignInStatus.Success:
                return RedirectToLocal(returnUrl);
            case SignInStatus.LockedOut:
                return View("Lockout");
            case SignInStatus.RequiresVerification:
                return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc identity asp.net-identity asp.net-identity-2

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