已回答 C#字符串问题

赛义德

活跃成员
已加入
2020年10月21日
留言内容
34
编程经验
3-5
你好,

该代码的最后部分是否错误?
我在某些部分下看到红线。
我在Blazor做这个项目。

my code:
  public string resultMessage {get;set;}

var result = await _instaApi.UploadVideoAsync(mediaVideo, mediaImage,VideoUpload.captionVideo);

resultMessage = (result.Succeeded ?$ "Media created: {result.Value.Pk},{result.Value.Caption}"
        : $"Unable to upload video: {reult.Info.Message}");

接着:

C#:
<p>result:@resultMessage</p>

谢谢,

赛义德
 
Solution
您应该做的一件事是;更改代码的操作方式。并更改返回类型以及调用代码如何接收结果。

C#:
    public async Task StartUploadStory()
您最好将结果返回到完成上传任务后运行的调用代码。

我仍然建议将MVC项目添加到Blazor应用程序。您不会找到很多这样做的开发人员,主要是因为他们不知道您可以使用基于MVC的Web应用程序来驱动Blazor应用程序。性能下降几乎不明显,并且通过使用MVC应用程序带来了强大的功能。看 : 在现有MVC中使用Blazor组件...

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,536
地点
弗吉尼亚州切萨皮克
编程经验
10+
如果将鼠标悬停在红色的花体上,或者实际上是在编译代码,那么编译器返回的错误消息是什么?
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,536
地点
弗吉尼亚州切萨皮克
编程经验
10+
这取决于您的UI。您在上面说这是Blazor应用程序。然后,我假设您将字符串渲染为Razor页面,就像您在上面尝试做的那样。
 

赛义德

活跃成员
已加入
2020年10月21日
留言内容
34
编程经验
3-5
这取决于您的UI。您在上面说这是Blazor应用程序。然后,我假设您将字符串渲染为Razor页面,就像您在上面尝试做的那样。
你能解释更多吗?

Blazor将显示如下结果:
C#:
<p>result:@resultMessage</p>

我对C#代码表示怀疑:

C#:
  public string resultMessage {get;set;}

var result = await _instaApi.UploadVideoAsync(mediaVideo, mediaImage,VideoUpload.captionVideo);

resultMessage = (result.Succeeded ?$ "Media created: {result.Value.Pk},{result.Value.Caption}"
        : $"Unable to upload video: {reult.Info.Message}");

谢谢
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
您的问题很糟糕,缺少足够的细节来帮助您。这是blazor服务器应用程序还是blazor wasm?

您仅提供有限数量的基本操作代码,而无需说明其操作方式或预期功能。

您上面的代码在哪里执行?在视图或类中?

通常,您会将结果返回到局部视图,并将该局部视图呈现给主视图。或者,您可以将操作发布到控制器,然后将模型提交到视图。

由于您没有在幕后显示任何逻辑,因此很难回答我们不知道或不了解的内容,因为您没有向我们解释。

顺便说一句,我不建议Blazor在生产中运行。不用说我自己 @跳伞 已经进行了一些测试,并且Blazor内部存在许多仍需要解决的问题。尽管微软说了什么,但Blazor也不完全与Bootstrap兼容。

您的结果将返回哪里。要什么类型的文件?
 

赛义德

活跃成员
已加入
2020年10月21日
留言内容
34
编程经验
3-5
您的问题很糟糕,缺少足够的细节来帮助您。这是blazor服务器应用程序还是blazor wasm?

您仅提供有限数量的基本操作代码,而无需说明其操作方式或预期功能。

您上面的代码在哪里执行?在视图或类中?

通常,您会将结果返回到局部视图,并将该局部视图呈现给主视图。或者,您可以将操作发布到控制器,然后将模型提交到视图。

由于您没有在幕后显示任何逻辑,因此很难回答我们不知道或不了解的内容,因为您没有向我们解释。

顺便说一句,我不建议Blazor在生产中运行。不用说我自己 @跳伞 已经进行了一些测试,并且Blazor内部存在许多仍需要解决的问题。尽管微软说了什么,但Blazor也不完全与Bootstrap兼容。

您的结果将返回哪里。要什么类型的文件?

亲爱的史密斯:

这是Blazor服务器应用程序:

这是视图:

C#:
@page "/UploadStory"

@using System;
@using System.Collections.Generic;
@using System.IO;
@using System.Threading.Tasks;
@using InstaSharper.API;
@using InstaSharper.API.Builder;
@using InstaSharper.Classes;
@*@using InstaSharper.Examples.Samples;*@
@using InstaSharper.Logger;
@using Microsoft.AspNetCore.Components.Web;
@using Microsoft.JSInterop;
@inject IJSRuntime jsRuntime;
@using InstaSharper.Classes.Models;


<div>
    <label for="story">Story:</label>
</div>

<div>

    <input type="file" id="sUpload" @bind="storyUpload" @bind:event="oninput" />

</div>

<br />
<div>
    link:@storyUpload
</div>

<br/>


<div>
    <label for="caption">Caption:</label>
</div>


<div>

   
    <textarea rows="3" cols="50" name="comment" id="caption" @bind="captionStory" @bind:event="oninput"></textarea>

</div>
<br/>

<div>

     <button type="button" class="btn btn-primary " @onclick="StartUploadStory"  >Submit</button>
</div>
<br/>

<p>result:@resultMessage</p>

然后是代码部分:

C#:
@code {

    public static string storyUpload { get; set; }
    private readonly IInstaApi _instaApi;
    public static string captionStory { get; set; }
    public string resultMessage {get;set;}



    public async Task StartUploadStory()
    {
        var mediaStory = new InstaImage
        {
            Height = 1080,
            Width = 1080,

         
            URI = new Uri(Path.GetFullPath(UploadStory.storyUpload), UriKind.Absolute).LocalPath
        };

        var result = await _instaApi.UploadStoryPhotoAsync(mediaStory, captionStory);
       
         resultMessage = (result.Succeeded ? $"Media created: {result.Value.pk},{result.Value.Caption}"
        : $"Unable to upload story: {result.Info.Message}");
    }

}
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,536
地点
弗吉尼亚州切萨皮克
编程经验
10+
在Blazor中,这似乎对我来说很好:
HTML:
@page "/"

<p>Result: @ResultMessage</p>

<button class="btn btn-primary" @onclick="Roll">Roll Saving Throw</button>


@code {
    static Random _random = new Random();
    public string ResultMessage { get; set; }

    void Roll()
    {
        var randomNumber = _random.Next(20) + 1;
        var failed = randomNumber < 15;
        ResultMessage = failed ? $"Saving throw failed: {randomNumber}."
                                : $"You are saved! You rolled a {randomNumber}!";
    }
}
 
Last edited:

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
是的。看起来应该不错。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
两个都。

他张贴的伪示例与您的代码非常相似,减去了await调用和随机生成器。点是一样的。但是,请问您为什么选择Blazor?
我宁愿使用MVC。完全不需要在Blazor中使用MVC。实际上,将MVC与Blazor一起使用会稍微慢一些(很少注意到),但是这也是可能的,并且为Blazor应用程序带来了强大的功能。如果您有兴趣了解更多信息,请访问google 克里斯·桑迪(Chris Sainty)在现有MVC应用中使用blazor组件.

关于您的帖子:
我对C#代码表示怀疑:
您对什么有疑问,是否遇到问题?
 

赛义德

活跃成员
已加入
2020年10月21日
留言内容
34
编程经验
3-5
Both.

他张贴的伪示例与您的代码非常相似,减去了await调用和随机生成器。点是一样的。但是,请问您为什么选择Blazor?
我宁愿使用MVC。完全不需要在Blazor中使用MVC。实际上,将MVC与Blazor一起使用会稍微慢一些(很少注意到),但是这也是可能的,并且为Blazor应用程序带来了强大的功能。如果您有兴趣了解更多信息,请访问google 克里斯·桑迪(Chris Sainty)在现有MVC应用中使用blazor组件.

关于您的帖子:

您对什么有疑问,是否遇到问题?
我也知道WebForms并熟悉MVC。
我选择Blazor的原因是我对这种方法非常满意。单页应用程序。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
好吧,我们都有我们喜欢和不喜欢的东西的偏好。我喜欢亲自将Blazor与MVC混合使用(使用时)。虽然,我不再像我提到的那样使用Blazor,但是它有一些问题,并且我个人认为尚未准备好在生产现场使用它。微软有一个糟糕的习惯,即在不完全测试产品的情况下发布产品。

无论如何,关于您的代码是否存在问题,您从未回答过我。鉴于您使用的是不带MVC的Blazor,因此我看不到任何明显的问题。如果有问题,请告知。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,525
地点
悉尼,澳大利亚
编程经验
10+
我了解我的问题,但还有另一个问题:
然后,您应该已将此线程标记为“已解决”,并创建了一个仅包含与新问题相关的所有信息的新线程。请每个主题一个主题,每个主题一个主题,因此所有对话都集中在一个主题上。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
您应该做的一件事是;更改代码的操作方式。并更改返回类型以及调用代码如何接收结果。

C#:
    public async Task StartUploadStory()
您最好将结果返回到完成上传任务后运行的调用代码。

我仍然建议将MVC项目添加到Blazor应用程序。您不会找到很多这样做的开发人员,主要是因为他们不知道您可以使用基于MVC的Web应用程序来驱动Blazor应用程序。性能下降几乎不明显,并且通过使用MVC应用程序带来了强大的功能。看 : 在现有的MVC应用程序中使用Blazor组件 我有更多时间查看您的代码/帖子。

This : public static string storyUpload { get; set; } and : <input type="file" id="sUpload" @bind="storyUpload" @bind:event="oninput" />. Why are you using a string, and where are you encoding your data or reading it into a memorystream to upload? If you are uploading a datastream of any kind to Instagram, or any other server, you would send a datastream and not a string. Most servers also expect the sender to upload encoded data too.

而Blazor不需要传统的动作url和post方法。我个人会这样写。就是说,正如您将在本文档中看到的那样,您不必像我建议的那样做: ASP.NET Core Blazor文件上传 -希望这会给您一些指导,使您步入正轨。

我还应该警告您,通过自己的应用程序以外的任何其他应用程序上载到Instagram,都违反了他们的服务条款,并且一旦发现使用的帐户,他们将禁止该应用程序。并且请确保,他们在检查上传签名时会检测到您的上传。这不是您可以规避的事情,我也不希望这里有任何人可以帮助您尝试。您应该尊重任何公司制定的TOS。
 
解决方案

赛义德

活跃成员
已加入
2020年10月21日
留言内容
34
编程经验
3-5
您应该做的一件事是;更改代码的操作方式。并更改返回类型以及调用代码如何接收结果。

C#:
    public async Task StartUploadStory()
您最好将结果返回到完成上传任务后运行的调用代码。

我仍然建议将MVC项目添加到Blazor应用程序。您不会找到很多这样做的开发人员,主要是因为他们不知道您可以使用基于MVC的Web应用程序来驱动Blazor应用程序。性能下降几乎不明显,并且通过使用MVC应用程序带来了强大的功能。看 : 在现有的MVC应用程序中使用Blazor组件 我有更多时间查看您的代码/帖子。

This : public static string storyUpload { get; set; } and : <input type="file" id="sUpload" @bind="storyUpload" @bind:event="oninput" />. Why are you using a string, and where are you encoding your data or reading it into a memorystream to upload? If you are uploading a datastream of any kind to Instagram, or any other server, you would send a datastream and not a string. Most servers also expect the sender to upload encoded data too.

而Blazor不需要传统的动作url和post方法。我个人会这样写。就是说,正如您将在本文档中看到的那样,您不必像我建议的那样做: ASP.NET Core Blazor文件上传 -希望这会给您一些指导,使您步入正轨。

我还应该警告您,通过自己的应用程序以外的任何其他应用程序上载到Instagram,都违反了他们的服务条款,并且一旦发现使用的帐户,他们将禁止该应用程序。并且请确保,他们在检查上传签名时会检测到您的上传。这不是您可以规避的事情,我也不希望这里有任何人可以帮助您尝试。您应该尊重任何公司制定的TOS。

亲爱的史密斯,

感谢您的帮助和链接帮助。我将考虑在我的项目中使用MVC。没有太多关于此方法的资源(将MVC与Blazor结合使用)。
我将在Facebook公司的监督下发布此网站。

您能否解释一下有关使用字符串上载的错误?我需要您的信息和帮助。

谢谢;
 
由主持人最后编辑:

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,536
地点
弗吉尼亚州切萨皮克
编程经验
10+
I think that the reason why he is using a string is because he is using that (illegal/unofficial?) InstaSharper API name UploadStoryPhotoAsyc() which take an InstaImage object that happens to just hold a URL, rather than a data stream.
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
您能否解释一下有关使用字符串上载的错误?我需要您的信息和帮助。
考虑到什么,不一定是错误的 @跳伞 在上方突出显示。由于我对API一无所知,因此您正在使用。鉴于这是一个(非正式)API,它可能已经被拥有Instagram的Facebook阻止。因此,为什么它对您不起作用。这只是我的一个假设。

上载文件时,通常的做法是将文件作为数据流发送到也要上载的服务器。当存储在服务器上时,这些数据流通常使用base64 /其他加密方法进行编码。您根据Skydiver使用的API使用的是字符串。由于我不知道该字符串中的API如何处理文件,因此我无法进一步解决此问题,因为这已成为第三方问题,而不是C#特定问题。我也不会对帮助某人规避和违反任何公司服务条款的政策感兴趣。

抱歉,但是我们将不得不把这辆车停在这里。
 
最佳 底部