小编Vag*_*gue的帖子

使用MVC Core下载文件

我找不到使用MVC Core下载文件的参考.

我们有一个exe文件供会员从我们的网站下载.过去我们已经把

<a href=(file path)> Download < /a>供我们的用户点击.我想在MVC Core中做同样的事情

<a href=@ViewData["DownloadLink"]> Download < /a>
Run Code Online (Sandbox Code Playgroud)

使用下载链接填充文件路径.

public class DownloadController : Controller
{
    [HttpGet]
    public IActionResult Index()
    {
        ViewData["DownloadLink"] = ($"~/Downloads/{V9.Version}.exe");
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

`

链接<a href=@ViewData["DownloadLink"]> Download < /a>获取正确的路径,但单击时仅在地址栏中呈现路径.有没有简单的方法来设置下载链接?

asp.net-core-mvc

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

asp-route-id不传递参数值

此表正确填充@device.DeviceId但未传递@device.DeviceId给控制器操作.

<table border="1" cellpadding="10">
    @foreach (var device in @Model.Devices)
    {
        <tr>
            <td>@device.DeviceId</td>
            <td>@device.DeviceName</td>
            <td>
                <a asp-action="DeleteDevice"
                   asp-controller="Device"
                   asp-route-id="@device.DeviceId" asp->
                    Delete
                </a>
            </td>
        </tr>
    }
</table>
Run Code Online (Sandbox Code Playgroud)

控制器动作签名是

public async Task<IActionResult> DeleteDevice(int deviceId)
Run Code Online (Sandbox Code Playgroud)

调用该操作但deviceId= 0.

如何确保@device.DeviceId正确传递给操作?

asp.net-core-mvc asp.net-core

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

MVC6国家下拉列表

我正在尝试使用MVC6 Tag Helpers创建CountryCode和CountryName的下拉列表,以便用户在注册后可以选择他们的国家/地区.到目前为止,视图的相关部分看起来像这样

    <form asp-controller="Manage" asp-action="EditCountry" asp-route-returnurl="@ViewData["ReturnUrl"]">
    <div asp-validation-summary="ValidationSummary.ModelOnly" class="text-danger"></div>
    <select asp-for="CountryCode" asp-items="@Model.Countries"></select>
Run Code Online (Sandbox Code Playgroud)

viewmodel的相关部分看起来像这样

    [Display(Name = "Country")]
    public string CountryCode { get; set; }
    public IEnumerable<Country> Countries { get; set; }
Run Code Online (Sandbox Code Playgroud)

国家看起来像这样

    public partial class Country
{
    [Key]
    public string CountryCode { get; set; }
    public string CountryName { get; set; }
    public virtual ICollection<ApplicationUser> Users { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

控制器将视图模型返回国家/地区列表

            var model = new IndexViewModel
        {
            CountryCode = user.CountryCode,
            Countries =_customersContext.Countries.OrderBy(c=>c.CountryName),
        };
        return View(model);
    }
Run Code Online (Sandbox Code Playgroud)

但在视图中asp-items="@Model.Countries"有一个波浪形 …

c# asp.net-core-mvc asp.net-core

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

重定向登录到控制器操作

从使用个人用户帐户的ASP.NET 5 Web应用程序模板开始,我已设法使用Microsoft帐户进行外部身份验证.当用户点击登录,他们将被重定向到ExternalLoginAccountController这样的

<form asp-controller="Account" asp-action="ExternalLogin" method="post" asp-route-returnurl="@ViewData["ReturnUrl"]" class="nav navbar-right">
    <button type="submit" class="btn btn-null nav navbar-nav navbar-right" name="provider" value="Microsoft" title="Log in"><span class="fa fa-sign-in"/>&nbsp; Log In</button>
</form>
Run Code Online (Sandbox Code Playgroud)

这让他们使用他们的Microsoft帐户登录,所有似乎都运行良好.但是,如何拦截直接尝试访问特权操作[Authorize] 以便将用户重定向到ExternalLogin?可以设置默认操作Startup.cs吗?

编辑1尝试遵循我CustomAutorizationFilter在Filters文件夹中创建的@Yves的建议.它不会检查任何条件

public class CustomAutorizationFilter : IAuthorizationFilter
{
    public void OnAuthorization(Microsoft.AspNet.Mvc.Filters.AuthorizationContext context)
    {
        //if (...) // Check you conditions here
        //{
            context.Result = new RedirectToActionResult("ExternalLogin", "Account", null);
        //}
    }
}
Run Code Online (Sandbox Code Playgroud)

并编辑ConfigureServices如下

        services.AddMvc(config =>
        {
            config.Filters.Add(typeof(Filters.CustomAutorizationFilter));
        });
Run Code Online (Sandbox Code Playgroud)

当我在本地运行应用程序时,它不再进入主页.它返回一个空白http://localhost:52711/Account/ExternalLogin

显然有很多我不明白. …

entity-framework-core asp.net-core-mvc asp.net-identity-3 asp.net-core

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

OpenId Connect中用户的唯一ID是什么

我们有一个使用Asp.Net Identity的Asp.Net 4.5 MVC应用程序来管理我们的客户数据库.我们目前正在使用Microsoft帐户身份验证.我们正在考虑使用OpenId Connect,以便拥有工作/学校帐户的客户也可以登录添加登录到.NET MVC Web应用程序.

Microsoft Account Authentication返回ProviderKey作为已登录用户的唯一ID.这将映射到我们的客户数据库中的UserId.

OpenId Connect似乎没有返回ProviderKey,但NameIdentifier看起来很有希望 ClaimsPrincipal.Current.FindFirst(System.IdentityModel.Claims.ClaimTypes.NameIdentifier)?.Value;

NameIdentifierOpenId Connect返回的用户的唯一标识符吗?是否可以可靠地用于随着时间的推移唯一地识别用户?

asp.net-identity azure-active-directory adal openid-connect azure-ad-msal

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

子集合未保存在 Entity Framework Core 中

我们能够保存对父对象的更改,但不会保留对子集合的更改。

我们使用了允许 EF Core 发现关系并正确构建数据库的命名约定。

我正在测试的示例在 db 中有一个带有单个子实体的父实体。我们已将第二个子实体添加到该父实体的 MyChildren 集合中。为什么 SaveChanges 不会将 MyChildren 集合的更新保存到数据库?

public class ParentType
{
    public Guid ParentId { get; set; }
    public string SomeString { get; set; }
    public ObservableCollection<ChildType> MyChildren { get; set; } = new ObservableCollection<ChildType>();
}

public class ChildType
{
    public Guid Child { get; set; }
    public ParentType MyParent { get; set; }
}
// in the example parentIn is passed with 2 ChildType entities in MyChildren.
public static ParentType SaveMe(ParentType parentIn) …
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-framework-core

5
推荐指数
0
解决办法
674
查看次数

更改 Windows Store 应用程序的包名称

我们如何更改 Windows Store 应用程序的包名称?请注意,我们不想更改应用程序显示名称。

我们已将 UWP 应用发布到 Windows 应用商店。Visual Studio<PublisherName>.<AppName>在包清单中生成了一个包名称。

当我将包清单中的包名称更改为 guid 并发布到商店时,我收到了错误

 Invalid package identity name
 Invalid package family name
Run Code Online (Sandbox Code Playgroud)

我可以看到商店应用程序与包名称相关联。我们是否必须删除商店应用程序并创建新的提交?

UWP 商店应用程序可以有包名称的 guid 吗?

windows-store windows-store-apps uwp

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

userManager.CreateAsync System.ObjectDisposedException未处理

我们正在尝试在ASP.Net 5项目中使用Microsoft帐户身份验证.我们不需要本地身份验证,也不需要用户名.

在用于Web应用程序的ASP.Net 5模板中,在使用外部提供程序登录后,控件将返回到ExternalLoginCallbackAccountController中.

如果用户未在本地注册,ExternalLoginCallback则将用户返回到注册屏幕.我试图修改ExternalLoginCallback为自动注册新用户,如下所示.

        public async Task<IActionResult> ExternalLoginCallback(string returnUrl = null)
    {
        var info = await _signInManager.GetExternalLoginInfoAsync();
        if (info == null)
        {
            return RedirectToAction(nameof(Login));
        }

        // Sign in the user with this external login provider if the user already has a login.
        var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false);
        if (result.Succeeded)
        {
            _logger.LogInformation(5, "User logged in with {Name} provider.", info.LoginProvider);
            return RedirectToLocal(returnUrl);
        }
        if (result.RequiresTwoFactor)
        {
            return RedirectToAction(nameof(SendCode), new { ReturnUrl = …
Run Code Online (Sandbox Code Playgroud)

entity-framework-core asp.net-core-mvc asp.net-identity-3 asp.net-core

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

无法将模式“AspNetUsers”中的表“AspNetUsers”用于实体“AspNetUsers”,因为它正用于另一个实体

我们正在尝试通过扩展 AspNetUsers 将 Identity 3 添加到我们现有的客户应用程序中

    public class ApplicationUser : IdentityUser
{
    public string BusinessName { get; set; }
    public string ContactName { get; set; }
    public string CountryCode { get; set; }
    public virtual Countries Country { get; set; }
    public string AddressLabel { get; set; }
    public string Phone { get; set; }
    public DateTime? FollowUp { get; set; }
    public bool MailingList { get; set; }
    public int SubscriptionId { get; set; }
    [ForeignKey("SubscriptionId")]
    public virtual Subscriptions …
Run Code Online (Sandbox Code Playgroud)

entity-framework-core asp.net-core-mvc asp.net-identity-3 asp.net-core

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

将SQLite数据库放在UWP应用程序中的位置

当前实体框架核心文档提供了在Windows 10/UWP应用程序中使用SQLite的示例.给出的示例声明了db位置, optionsBuilder.UseSqlite("Filename=Blogging.db");其路径等效Windows.Storage.ApplicationData.Current.LocalFolder.Path于此<packagefolder>\LocalState.将SQLite数据库放入.

我们正在探索将UWP/SQLite用于将业务事务存储在SQLite数据库中的业务应用程序.但是文件夹名称LocalState告诉我,这是存储状态信息的地方,而不是商业交易的长期存储.

还有另一个文件夹<packagefolder>\AppData.这是我们的数据库更合适的位置吗?如果是这样,如何在UWP应用程序中访问它?或者<packagefolder>\LocalState毕竟是一个正确的位置来放置一个用于长期存储业务交易的数据库?

sqlite entity-framework entity-framework-core uwp

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

UWP错误CS5001程序不包含适用于入口点的静态"主"方法

更新Nuget包后会弹出此构建错误.有很多关于错误CS5001的信息,但是关于我能找到的UWP中的这个错误没有任何信息.

错误引用文件夹\ Visual Studio 2015\Repos\MySolution\MyProject\CSC.此文件夹不存在,但它在我的任何其他UWP应用程序中都不存在,并且它们构建得很好.

重建,清理,重启VS,无需修复.

uwp

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

UWP类库中的参考ResourceDictionary

我们有一个使用Template 10的UWP应用。资源在同一解决方案的UWP类库中。当我们运行应用程序时,我们得到错误

{Windows.UI.Xaml.Markup.XamlParseException:无法从“ ms-resource:/// Files / Styles \ ButtonStyle.xaml”中找到资源。

在App.xaml中,我们有

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Styles\Custom.xaml" />
    <ResourceDictionary Source="Styles\ButtonStyle.xaml"/>
    <ResourceDictionary Source="Styles\ListsStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
Run Code Online (Sandbox Code Playgroud)

我们遵循了

Windows 10通用合并字典

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="ms-appx:///Styles/Custom.xaml" />
    <ResourceDictionary Source="ms-appx:///Styles/ButtonStyle.xaml"/>
    <ResourceDictionary Source="ms-appx:///Styles/ListsStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
Run Code Online (Sandbox Code Playgroud)

那么错误是

{Windows.UI.Xaml.Markup.XamlParseException:无法分配给属性“ Windows.UI.Xaml.ResourceDictionary.Source”,因为无法将类型“ Windows.Foundation.String”分配给该类型...

我们还在单独的库中的ResourceDictionary中尝试了该解决方案

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="pack://application:,,,/LibraryName;component/Styles/Custom.xaml" />
    <ResourceDictionary Source="pack://application:,,,/LibraryName;component/Styles/ButtonStyle.xaml"/>
    <ResourceDictionary Source="pack://application:,,,/LibraryName;component/Styles/ListsStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
Run Code Online (Sandbox Code Playgroud)

那么错误是

{Windows.UI.Xaml.Markup.XamlParseException:无法从pack:// application:,, / LibraryName; component / Styles / Custom.xaml'找到资源

我们如何在UWP类库中引用ResourceDictionary?

xaml uwp uwp-xaml

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

在Null对象的属性上使用Null Conditional Operator

我想使用Null-Conditional运算符来检查SubscriptionExpires下面的属性.

    public partial class Subscription
{
    [Key]
    public int SubscriptionId { get; set; }
    public string SubscriberId { get; set; }
    public DateTime? SubscriptionExpires { get; set; }

    public virtual ICollection<ApplicationUser> Users { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

订阅由返回

var subscription = _customersContext.Subscriptions.Where(s => s.SubscriptionId == user.SubscriptionId).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

但是如果Subscription为null,则Subscription?.SubscriptionExpires返回a null reference exception,所以我们仍然保留旧的

if (subscription != null)
Run Code Online (Sandbox Code Playgroud)

当父对象可以为null时,如何使用Null-Conditional运算符来读取属性?

c# c#-6.0 entity-framework-core

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