我使用流行的技术“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对象?
我的同事用一个我认为实际上应该失败的工作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)中运行它
更新 使此查询工作 - 没问题.问题是为什么它首先起作用并且没有抛出语法错误.
我有包含字段 id、studentname、highestmarks 的数据库
现在学生获得了新分数,我想用新分数更新数据库,但前提是新分数大于字段“highestmarks”中存储的值,否则我不想更新。
在 MySQL 中,这可以使用 GREATER 函数来实现,但我不知道 MS-SQL
我需要使用一些更复杂的规则来验证新的(或更新的)用户的电子邮件地址.
我想过使用进入用户管理器的用户存储,但是IdentityResult在何处以及如何构建?
我只是抛出一个例外,就是这样吗?或者是否有一些额外的验证机制?
使用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
我正在使用此代码进行登录.用户登录时如何找到用户角色?
[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
asp.net ×2
asp.net-mvc ×2
sql ×2
sql-server ×2
ajax ×1
azure ×1
c# ×1
identity ×1
usermanager ×1