小编Hak*_*tık的帖子

WPF TextBlock 在文本换行后获取行

我有FixedDocument页面,我想TextBlock放在它上面,但它可能Textblock不适合页面的高度。
所以我想从繁重的产生线TextBlock带TextWrapping,然后创建新的TextBlock,即通过安装高度,并把它页。
TextBlock有LineCount私有财产,这意味着它TextLines在包装后有,我可以以某种方式得到它。使用运行
创建TextBlock:

public TextItem(PageType pageType, Run[] runs, Typeface typeFace, double fontSize)
        : base(pageType)
{
     this.TextBlock = new TextBlock();
     this.TextBlock.Inlines.AddRange(runs);
     if (typeFace != null)
          this.TextBlock.FontFamily = typeFace.FontFamily;

     if (fontSize > 0)
           this.TextBlock.FontSize = fontSize;
     this.TextBlock.TextWrapping = TextWrapping.Wrap;   //wrapping
}
Run Code Online (Sandbox Code Playgroud)

TextBlock用文本创建:

public TextItem(PageType pageType, String text, Typeface typeFace, double fontSize)
        : base(pageType)
{
    if (typeFace == null || fontSize == …
Run Code Online (Sandbox Code Playgroud)

wpf textblock fixeddocument line-count

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

通过JavaScript填充Bootstrap Dual Listbox问题

使用Bootstrap Dual Listbox时我遇到了一些问题(http://www.virtuosoft.eu/code/bootstrap-duallistbox/).当ListBox通过java Script填充时,它没有按预期工作.我的意思是不工作是列表没有正确填充,并且从两个列表框中传输选定的项目不是它应该工作的.不知何故,当列表由硬编码填充时,它运行良好.

这是一切工作正常的部分:

<div class="row-fluid">
    <div class="container">
        <select multiple="multiple" size="10" name="SelectItem" class="eItems" id="SelectItem">
            <option value="option1">Option 1</option>
            <option value="option2">Option 2</option>
            <option value="option3" selected="selected">Option 3</option>
            <option value="option4">Option 4</option>
            <option value="option5">Option 5</option>
            <option value="option6" selected="selected">Option 6</option>
            <option value="option7">Option 7</option>
            <option value="option8">Option 8</option>
        </select>

        <script type="text/javascript">
            var demo2 = $('.eItems').bootstrapDualListbox({
                nonselectedlistlabel: 'Non-selected',
                selectedlistlabel: 'Selected',
                preserveselectiononmove: 'moved',
                moveonselect: false,
                bootstrap2compatible : true
            });
        </script>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

但是当使用JavaScript填充时,它会被填充,但功能运行不正常:

来自Controller的数据收集器:

<script type="text/javascript">
    function ProductChange() {
        $.getJSON("/WEBAPP/MasterData/GetItems", null, function (data) {        
            var items;
            $.each(data, …
Run Code Online (Sandbox Code Playgroud)

javascript razor asp.net-mvc-4 twitter-bootstrap

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

KnockoutJS实时验证本地化

我正在尝试本地化KnockoutJS验证插件,但我需要能够在运行中切换语言.这个插件有一个问题,但它已经超过2年了(并且仍然开放).

我只是想做的是在加载所有内容后切换验证消息的语言.这是一个例子(可以在小提琴上看到:http://jsfiddle.net/Kikketer/S6j2q/)

<input data-bind='value: phone' />
<div data-bind="text: phone"></div>
<button type='button' data-bind="click: v">Validate</button>
<button type='button' data-bind='click: switchLanguage'>Switch Language</button>
Run Code Online (Sandbox Code Playgroud)

使用以下JS:

ko.validation.configure({
    registerExtenders: true
});
// If I localize right away, things work
ko.validation.localize({required: '**Required'});

var InterviewTwo = function() {
    // Standard "required" validator
    this.phone = ko.observable().extend({required: true});

    // Group all of the validators
    this.errors = ko.validation.group(this);

    // Validation function
    this.v = function() {
        this.errors.showAllMessages();
    };

    // Switching languages after or before the validation …
Run Code Online (Sandbox Code Playgroud)

knockout.js knockout-validation

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

JS Globalize - 加载json cldr

我的最新版本有问题globalize.js.要使用它,我必须加载cldr modules和语言定义.

现在我从全球化文档中得到了这个例子:

// loading needed modules
$.get('/Scripts/cldr/supplemental/likelySubtags.json', Globalize.load);
$.get('/Scripts/cldr/main/en/numbers.json', Globalize.load);
$.get('/Scripts/cldr/main/de/numbers.json', Globalize.load);

// set current language
lobalize.locale('de-de');
Run Code Online (Sandbox Code Playgroud)

我现在的问题是本地json文件加载异步.这意味着在我的脚本尝试设置当前语言的那一刻,模块尚未加载.

现在我试着变得聪明并做到了这一点:

$.get('/Scripts/cldr/supplemental/likelySubtags.json', function (data) {
        Globalize.load(data);
        Globalize.locale('de-de');
});

$.get('/Scripts/cldr/main/en/numbers.json', Globalize.load);
$.get('/Scripts/cldr/main/de/numbers.json', Globalize.load);
Run Code Online (Sandbox Code Playgroud)

这将一直有效,直到我真正使用全球化格式方法.在我的HTML里面,我在一个淘汰赛绑定中使用全局化,如下所示:

<span data-bind="text: Globalize.formatNumber(SomeNumber, { maximumFractionDigits: 0 })"></span>
Run Code Online (Sandbox Code Playgroud)

现在"formatNumber"方法抛出错误,因为在绑定发生时并非所有模块都被加载.

我现在的问题是,如何同步我的JavaScript?

javascript jquery json knockout.js cldr

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

ContinueWith TaskContinuationOptions.OnlyOnFaulted似乎没有捕获从启动任务抛出的异常

我正在尝试捕获使用ContinueWith和OnlyOnFaulted的任务方法抛出的异常,如下所示.但是,当我尝试运行此代码时,我得到一个未处理的异常.

因为我已经处理了异常,所以我希望该任务能够完成.但Task.Wait()运行到AggregateException.

var taskAction = new Action(() =>
{
    Thread.Sleep(1000); 
    Console.WriteLine("Task Waited for a sec");
    throw (new Exception("throwing for example"));
});
Task t = Task.Factory.StartNew(taskAction);
t.ContinueWith(x => Console.WriteLine("In the on Faulted continue with code. Catched exception from the task."+  t.Exception), TaskContinuationOptions.OnlyOnFaulted);
Console.WriteLine("Main thread waiting for 4 sec");
Thread.Sleep(4000);
Console.WriteLine("Wait of 4 secs complete..checking if task is completed?");
Console.WriteLine("Task State: " + t.Status);
t.Wait();    
Run Code Online (Sandbox Code Playgroud)

如果我在下面的任务方法中处理异常,一切都会像我预期的那样正常.任务运行完成,异常被记录,等待也成功.

var taskAction = new Action(() =>
{
    try
    {
        Thread.Sleep(1000); 
        Console.WriteLine("Task Waited for a sec"); 
        throw …
Run Code Online (Sandbox Code Playgroud)

.net c# exception-handling task-parallel-library async-await

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

Globalize.addCultureInfo不是函数

我正在使用Globalize jQuery插件在MVC网站的客户端上进行全球化(正确的数字和日期格式)。因此,我已经下载了该插件,并在验证js文件本身之后添加了以下javascript文件(我也曾尝试将Globalize文件放在前面,但没有任何运气):

<script src="/Scripts/globalize.js"></script>
<script src="/Scripts/jquery.validate.globalize.min.js"></script>
<script src="/Scripts/globalize/globalize.culture.da-DK.js"></script>
Run Code Online (Sandbox Code Playgroud)

但是当运行应用程序时,我得到了错误

Globalize.addCultureInfo不是函数

我不知道是什么原因

asp.net-mvc jquery-plugins jquery-globalization

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

使用 Serilog 记录 json

我想将任何 json 记录到 serilog 属性中。我已经阅读了很多有关 serilog 和 json 的内容,但它是结构化的 json 日志记录,带有消息模板。所以我不想记录这个,而是Log.Info("{@text}",text);想这样做:

var json = "{ \"text\": \"hello\" }"; //a json string or a Json object
Log.Info(json);
Run Code Online (Sandbox Code Playgroud)

主要区别在于,使用第一种方法时,您有一个消息模板,并且始终有一个“文本”属性。我想要具有不同结构的 json,例如如果我有:

var json = "{ \"text\": \"hello\", \"text2\": \"hello2\" }"; //a json string or a Json object
Log.Info(json);
Run Code Online (Sandbox Code Playgroud)

我想获取 2 个属性,即每个 json 属性 1 个属性,而无需定义消息模板。这可能吗?我必须实现自己的 JsonFormatter 吗?

.net json seq serilog

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

ASP.NET MVC:将 JObject 作为 JsonResult 返回

我正在尝试返回 JObject 作为我的操作结果。我已经使用Newtonsoft.Json和JsonNetResult 的对象转换为JsonResult。对于普通对象,我使用以下语法将对象序列化为 JsonResult:

return new JsonResult
{
    ContentType = "application/json",
    ContentEncoding = System.Text.Encoding.UTF8,
    Data = myResult,
    JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
Run Code Online (Sandbox Code Playgroud)

这myResult是所需对象的实例,但是Newtonsoft.Json.Linq.JObject,如下所示为 JObject ( )尝试此操作,将返回无效结果,即[[[]]]:

JObject jsonObject = new JObject();
jsonObject["error"] = "invalid_id";
return new JsonResult
{
    ContentType = "application/json",
    ContentEncoding = System.Text.Encoding.UTF8,
    Data = jsonObject,
    JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
Run Code Online (Sandbox Code Playgroud)

在这种情况下如何序列化 JObject?

c# asp.net-mvc json.net

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

SignalR 不触发 OnDisconnected

问题:SignalR 没有OnDisconnected在我的网络服务器上触发。它非常简单,但不会触发。我试过了:

  • 关闭浏览器窗口
  • 导航离开
  • 重装
  • 从客户端在 SignalR 连接上触发 stop()。

public override Task OnDisconnected(bool stopCalled) {
    LogUtil.LogInfo("Disconn");
    return base.OnDisconnected(stopCalled);
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 SignalR 2.2.0.0 并且OnConnected工作正常。
我尝试了最后一次客户端调用的建议,以确保连接正常运行。
我搜索了所有论坛、SO、GIT 等,但没有解决我的问题。

c# asp.net signalr

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

Google身份验证ASP.NET Core Web Api

我在Google重定向到回调方法时遇到一些问题,它引发异常:oauth状态丢失或无效。

启动文件

public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<Conte>(config =>
            config.UseSqlServer(Configuration.GetConnectionString("Identity")));
        services.AddIdentity<IdentityUser, IdentityRole>()
            .AddEntityFrameworkStores<Conte>()
            .AddDefaultTokenProviders();

        services.AddAuthentication()
                .AddCookie("Cook")
                .AddGoogle(config =>
                {
                    config.SignInScheme = "Cook";
                    config.ClientId = Configuration["Authentication:Google:Client_Id"];
                    config.ClientSecret = Configuration["Authentication:Google:Client_Secret"];

                    config.ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "UserId");
                    config.ClaimActions.MapJsonKey(ClaimTypes.Email, "EmailAddress", ClaimValueTypes.Email);
                    config.ClaimActions.MapJsonKey(ClaimTypes.Name, "Name");

                });

                    services.AddMvc();
    }
Run Code Online (Sandbox Code Playgroud)

AccountController.cs

[AllowAnonymous]
    [HttpGet]
    [Route("/api/google-login")]
    public async Task LoginGoogle()
    {
        await HttpContext.ChallengeAsync("Google", new AuthenticationProperties() { RedirectUri = "/signin-google" });
    }

    [AllowAnonymous]
    [HttpGet]
    [Route("/signin-google")]
    public async Task<IActionResult> ExternalLoginCallback(string returnUrl = null, string remoteError = null)
    {   
        var info = await _signInManager.GetExternalLoginInfoAsync();

        // Sign …
Run Code Online (Sandbox Code Playgroud)

c# authentication google-oauth asp.net-identity asp.net-core

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