小编Jam*_*mes的帖子

MVC DateTime文本框格式问题

我想做点什么

model.PickupDate.ToString("d")
Run Code Online (Sandbox Code Playgroud)

但是MVC4并不是那么喜欢它. PickupDate是一个DateTime字段,我想在视图中显示时剥离时间部分,同时保持new { id = "date1" }绑定TextBoxFor到javasript datepicker 的代码.如何仅在此实例中显示日期部分?

@Html.TextBoxFor(model => model.PickupDate, new { id = "date1" })
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-4

20
推荐指数
2
解决办法
4万
查看次数

客户端验证未显示消息

我有一个MVC4互联网应用程序,其中包含用于创建用户帐户的表单.表单验证有效,但输入验证失败时,不会显示错误消息.它仍然会阻止提交,直到验证问题得到解决但没有文本

剃刀查看表格

<h2>Create New Account</h2>
<fieldset>
    <legend></legend>
    @using (Html.BeginForm("CreateUser",null)){
        @Html.AntiForgeryToken()
        <table class="create">
            <tr>
                <td colspan="2"><b>New Account</b>
            </tr>
            <tr>
                <td>@Html.DisplayNameFor(model=>model.UserName)</td><td>@Html.TextBoxFor(model=>model.UserName)</td>
                <td>@Html.DisplayNameFor(model=>model.EmailAddress)</td><td>@Html.TextBoxFor(model=>model.EmailAddress)</td>
                <td><input type="submit" value="Create User" /></td>
            </tr>
        </table>
    }
</fieldset>
    @Html.ValidationSummary()
Run Code Online (Sandbox Code Playgroud)

使用的包包括验证文件

bundles.Add(new ScriptBundle("~/bundles/asset").Include(
            "~/Scripts/jquery-{version}.js",
            "~/Scripts/jquery-ui-{version}.js",
            "~/Scripts/jquery.validate*",
            "~/Scripts/jquery.unobtrusive*"));
Run Code Online (Sandbox Code Playgroud)

使用的模型是一个实体模型,我添加了一个部分类来注释验证要求

[MetadataType(typeof(UserProfileMetadata))]
public partial class UserProfile
{
    //Empty Class just required for adding class level attribute
}

public class UserProfileMetadata
{
    //Fields from user profile requiring annotations
    [EmailAddress]
    [Required]
    [Display(Name = "Email Address")]
    public string  EmailAddress { get; set; }

    [Required]
    public string …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc jquery-validate unobtrusive-validation asp.net-mvc-4

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

C#异步文件传输 - 在继续循环之前等待

我试图了解.NET 4.5中的变化,主要是异步功能.为了理解它,我想我会创建一个小应用程序来存档我的大量照片集.我通过这样做来学习最好的应用程序有双重目的.

我已经阅读了很多关于使用异步的MSDN文章,但我认为我对它没有足够的了解(因为它不起作用).我的目的是将源文件夹中的每张照片根据其拍摄日期复制到目标文件夹(或者如果缺少所拍摄的元数据则创建).同时将其重命名为标准命名约定,并在图像框中存档时显示图像.我希望应用程序在工作期间保持响应,这是异步进入的地方.现在应用程序的目的并不重要,整个过程让我的头脑异步.

实际发生的是应用程序没有响应,按预期存档所有图像,但图像框仅显示最终图片.异步开始文件传输,然后继续下一个图像,开始传输然后继续等等,所以我最终得到数百个打开的文件流,而不是等待每个关闭.

任何我错误的地方的指针将不胜感激.我对使用任务的理解很简单,返回任务服务的目的是什么?

imgMain是XAML文件中的图像框.async/await在归档方法中,但显示所有可能相关的代码.

using System;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Media.Imaging;
using System.Windows.Forms;
using System.IO;

namespace PhotoArchive
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{

    private string Source 
    {
        get { return txtSource.Text; }
        set { txtSource.Text = value; }
    }

    private string Destination
    {
        get { return txtDestination.Text; }
        set { txtDestination.Text = value; }
    }


    public MainWindow()
    {
        InitializeComponent();

    } …
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous async-await .net-4.5

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

StructureMap解决跨项目的依赖关系

我的解决方案中有4个项目

  1. UI
  2. 基础设施
  3. 实体
  4. 测试

所有代码优先数据库设置和结构图设置都位于基础结构项目中.UI是ASP.NET MVC5.基础结构项目还承载一些WebService实现.

在UI项目中有一些类,它们充当控制器和外部Web服务之间的层.例如:

UI.Services.MappingService.cs 将使用方法 Infrastructure.ExternalWebServices.MappingWebService.cs

到目前为止,没有任何问题,接口名称都与具体的类名相匹配,因此structuremap可以正确解析它们.但是,现在需要从一个服务接口进行更改并实现多个具体类.

基础结构项目无法引用UI,因为它会创建循环依赖项.使用Mapping示例,我需要

UI.Services.Interfaces.IMappingService如果有不同的混凝土,structuremap将通过注册表文件中的逻辑或工厂类来解析正确的混凝土.问题是注册表文件位于基础结构项目中,因此无法识别UI,因此For(...).Use(...)无法实现.

如果我将接口移动到实体项目,它可以看到它们,但这也将涉及移动具体的类,这将破坏许多引用,并需要很多移动文件来修复.UI中的整个服务层加上相当多的视图模型需要移出实体项目才能实现.

有没有更简单的方法?我不是DI/StructureMap专家所以我想确保我不仅仅是让生活变得更加艰难.

c# structuremap asp.net-mvc dependency-injection

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

逆变值类型

我为我的存储库创建了这个界面.

public interface IRepository<T, in TKey> where T: class
{
    IEnumerable<T> Find(Expression<Func<T, bool>> predicate);
    IEnumerable<T> FindAll();
    T FindSingle(TKey id);
    void Create(T entity);
    void Delete(T entity);
    void Update(T entity);
}
Run Code Online (Sandbox Code Playgroud)

FindSingle方法接受一个I​​D,该ID将用于在主键上进行搜索.通过使用in我期望我只允许传递引用类型TKey.出于好奇,我决定创建一个具体的类并将其指定为int,所以我可以看到异常.

我查了MSDN,它指出这不应该工作

参考类型支持泛型类型参数的协方差和逆变,但值类型不支持它们.

我创建的类看起来像这样

public class ProjectRepository : IRepository<Project,int>
{
    public IEnumerable<Project> Find(Expression<Func<Project, bool>> predicate)
    {
        throw new NotImplementedException();
    }

    public IEnumerable<Project> FindAll()
    {
        throw new NotImplementedException();
    }

    public Project FindSingle(int id)
    {
        throw new NotImplementedException();
    }

    public void Create(Project entity)
    {
        throw …
Run Code Online (Sandbox Code Playgroud)

.net c# contravariance

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

如何在 .NET Core 中正确设置 WEB API 的策略授权

我有这个 Web API 项目,没有 UI。我的appsettings.json文件有一个部分列出了令牌以及它们属于哪个客户端。所以客户端只需要在标头中提供一个匹配的令牌。如果未提供令牌或无效令牌,则应返回 401。

在 ConfigureServices 我设置授权

.AddTransient<IAuthorizationRequirement, ClientTokenRequirement>()
.AddAuthorization(opts => opts.AddPolicy(SecurityTokenPolicy, policy =>
 {
       var sp = services.BuildServiceProvider();
       policy.Requirements.Add(sp.GetService<IAuthorizationRequirement>());
 }))
Run Code Online (Sandbox Code Playgroud)

从我所见,这部分正确触发。这是 ClientTokenRequirement 的代码

protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ClientTokenRequirement requirement)
    {
        if (context.Resource is AuthorizationFilterContext authFilterContext)
        {
            if (string.IsNullOrWhiteSpace(_tokenName))
                throw new UnauthorizedAccessException("Token not provided");

            var httpContext = authFilterContext.HttpContext;

            if (!httpContext.Request.Headers.TryGetValue(_tokenName, out var tokenValues))
                return Task.CompletedTask;

            var tokenValueFromHeader = tokenValues.FirstOrDefault();

            var matchedToken = _tokens.FirstOrDefault(t => t.Token == tokenValueFromHeader);

            if (matchedToken != null)
            {       
                httpContext.Succeed(requirement);
            }
        } …
Run Code Online (Sandbox Code Playgroud)

c# authorization asp.net-core asp.net-core-webapi asp.net-core-2.0

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

正则表达式匹配字符和最大长度

我试图在javascript中创建一个符合这些要求的正则表达式

  • 从0开始但第二个数字不是0
  • 长11-12个字符
  • 必须包含1个空格
  • 没有其他特殊字符或字母,只是数字

到目前为止,我已经提出了 ^[0][1-9][\d ]{9,10}$

但是,这仍然会匹配2个空格或没有空格.到目前为止,我找不到在数字中任何地方只需要一个空格的方法是不成功的.我尝试了积极的前瞻,并在网上找到了其他的例子,但是使量化器与要求一起工作已经证明是困难的.

javascript regex

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

Xamarin.Android 检查 API 级别

我有一个使用默认 SDK 选项开发、编译和发布的 Android 应用程序

使用 SDK 版本编译

我需要对这个应用程序进行添加,但是我不知道它在上次测试和发布时在编译时针对的是什么 SDK。

问题是更高的 API 级别有不同的要求,例如需要向用户寻求许可的授权更改。我可以从代码中看到这并没有这样做,所以它必须更早。

有没有办法从源代码或之前编译的 .apk 中知道使用了哪个 SDK?我无权更新所有代码以添加所有这些授权更改,只需进行一些小的更改即可。

sdk android xamarin

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