小编Ral*_*h N的帖子

C#Entity-Framework:如何在模型对象上组合.Find和.Include?

我正在做mvcmusicstore练习教程.我在为专辑管理器创建脚手架时注意到了一些事情(添加删除编辑).

我想优雅地编写代码,所以我正在寻找干净的方式来编写它.

仅供参考我正在使商店更通用:

专辑=项目

类型=类别

艺术家=品牌

以下是检索索引的方式(由MVC生成):

var items = db.Items.Include(i => i.Category).Include(i => i.Brand);
Run Code Online (Sandbox Code Playgroud)

以下是检索删除项的方法:

Item item = db.Items.Find(id);
Run Code Online (Sandbox Code Playgroud)

第一个带回所有项目并填充项目模型中的类别和品牌模型.第二个,没有填充类别和品牌.

我怎么能写第二个来做查找并填充里面的内容(最好是一行)...理论上 - 类似于:

Item item = db.Items.Find(id).Include(i => i.Category).Include(i => i.Brand);
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc entity-framework

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

清除方法来捕获MVC 3.0应用程序中抛出的所有错误?

我正在建立一个MVC 3.0电子商务网站.我想避免在我的代码中粘贴try-catch块.

问题很简单 - 捕获网站上所有错误的好策略是什么?我想知道所有这些...所以我可以努力在网站上线后将该数量计算为0.我计划将每个错误写入记录器并发送给它.

我已经完成了关于在global.asax文件中捕获它的一些阅读...但我也读过它没有得到所有这些.

任何人有任何建议或能指出我的方向吗?

error-handling model-view-controller asp.net-mvc

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

在ASP.NET中异步发送电子邮件的正确方法...(我做得对吗?)

当用户在我的网站上注册时,我不明白为什么我需要让他"等待"smtp通过才能获得激活电子邮件.

我决定以异步方式启动此代码,这是一次冒险.

让我们想象一下我有一个方法,例如:

private void SendTheMail() { // Stuff }
Run Code Online (Sandbox Code Playgroud)

我的第一个虽然是线程.我这样做了:

Emailer mailer = new Emailer();
Thread emailThread = new Thread(() => mailer.SendTheMail());
emailThread.Start();
Run Code Online (Sandbox Code Playgroud)

这工作......直到我决定测试它的错误处理能力.我故意破坏了我的web.config中的SMTP服务器地址并尝试了它.可怕的结果是IIS基本上BARFED与w3wp.exe上的未处理的异常错误(这是一个Windows错误!多么极端......)ELMAH(我的错误记录器)没有捕获它并且IIS重新启动所以网站上的任何人都有他们的会话被删除了.完全不可接受的结果!

我的下一个想法是,对异步代表进行一些研究.这看起来效果更好,因为在异步委托中处理异常(与上面的线程示例不同).但是,我担心如果我做错了或者我可能导致内存泄漏.

这是我正在做的事情:

Emailer mailer = new Emailer();
AsyncMethodCaller caller = new AsyncMethodCaller(mailer.SendMailInSeperateThread);
caller.BeginInvoke(message, email.EmailId, null, null);
// Never EndInvoke... 
Run Code Online (Sandbox Code Playgroud)

我这样做了吗?

c# asp.net email asynchronous

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

准备我的ASP.NET/MVC站点使用SSL?

我正准备SSL cert在我的主机上安装一个.

这是我的理解(并纠正我,如果我错了......):

  1. 一旦托管人员安装证书,我将能够浏览我的网站HttpHttps(没有什么能阻止我继续使用Http)?

  2. 我唯一需要做的就是添加逻辑(在MVC的情况下,控制器属性/过滤器)来强制我选择的某些页面重定向到Https(例如,[RequiresHttps]谨慎地添加属性).

我是否必须担心做这些事情以确保我使用SSL得当?我不确定我是否需要改变与逻辑有关的东西:

  1. 饼干

  2. PayPal Express集成

此外,我计划[RequiresHttps]仅添加购物车,结帐,登录,帐户和管理页面.我希望保留我的产品浏览/购物页面,Http因为我听说有更多的使用开销Https.这是正常/可接受/好吗?

还有一个问题......我知道ASP.NET以Auth cookie的形式存储一些登录信息.用户可以在Https页面中登录,但是可以返回并在Http页面中浏览吗?我想知道这是否会造成安全漏洞,因为用户已登录并Http再次浏览.这会破坏使用的重点SSL吗?

我在这方面有点新意......所以请帮助我们.

asp.net-mvc ssl

17
推荐指数
1
解决办法
9865
查看次数

在Paypal中进行货币转换舍入的正确方法是什么?

我正在构建一个与paypal集成的电子商务网站.

我们采取多种货币,所以我想确保(出于会计原因)我正确地执行货币转换的任何数学.

在将货币转换*乘以原始货币之后,我总是在小数点后面有大量的尾随数字.

有没有标准的方法来做到这一点?我应该截断还是圆?如果舍入1/1000小数将影响舍入1/100十进制,我是否需要多次舍入?

我应该做的事情如下:

Math.Round(Math.Round(x, 3), 2)
Run Code Online (Sandbox Code Playgroud)

我一直无法找到关于如何做到的好信息(希望美国和欧洲是一样的).

c# currency paypal decimal rounding

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

MVC中的[RequireHttps]不应该执行301永久重定向吗?为什么它会做302(对SEO不好?)

我在提琴手上注意到[RequireHttps]状态代码302重定向而不是301.我不确定这有多大意义......

如果你说的是控制器[RequireHttps],那么你永远不会希望人们去访问那个页面的Http版本.那么为什么不是永久重定向...告诉搜索引擎"请将您的链接永久更新到此页面的https版本".

如果这是有道理的,我是对的,有没有办法将其更改为301重定向?

model-view-controller

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

关于PayPal API版本#的混淆?

我对版本号完全感到困惑.我找到了显示API版本82.0的文档以及此版本中所做的更改:

https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_PreviousAPIVersionsNVP

但是,当我在这里使用集成向导时(对于C#/ ASP.NET):

https://www.paypal-labs.com/integrationwizard/ecpaypal/main.php

...它为版本"2.3"创建了一个paypal函数...没有接近版本"82.0"的地方.

有什么不同?除版本号外,它们似乎使用相同的API.如果存在差异,我在哪里可以找到关于版本2.3的API的文档?

paypal

8
推荐指数
1
解决办法
5593
查看次数

在LINQ中,如何对来自.Include()的数据执行.OrderBy()?

这是我在做什么:

List<Category> categories = 
  db.Categories.Include("SubCategories").OrderBy(c => c.Order).ToList();
Run Code Online (Sandbox Code Playgroud)

我的类别表上有一列称为“订单”,该列仅包含一个整数,该整数为表提供了某种排序顺序。

我的“ SubCategories”表上有同一列...

我想知道在我的子类别表上添加排序的最简单解决方案……

List<Category> categories = 
  db.Categories.Include("SubCategories").OrderBy(c => c.Order)
     .ThenBy(c => c.SubCategories as x => x.Order).ToList();
Run Code Online (Sandbox Code Playgroud)

我想将其保持为这种LINQ格式...(方法格式)...

请记住,我正在MVC中工作,需要将其作为模型返回到视图。由于AnonymousTypes,我一直遇到错误的麻烦...

c# linq asp.net-mvc

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

在AngularJS中,如何创建一个自定义验证指令,该指令采用$ scope变量并将其与ng-model的相等性进行比较?

我正在寻找一个新的angular指令,用于将输入的ngmodel值与其他值进行比较,并检查它们是否相等.

如果它们相等,我希望此输入有效.否则,无效.

<div ng-repeat="one in many">
    <ng-form name="somethingToValidate">
        <input type="text" ng-model="one.userTypedText" 
               required mustbeequalto="one.someOtherValue" />
    </ng-form>
</div>
Run Code Online (Sandbox Code Playgroud)

这是完成后使用的"mustbeequalto"指令的一个例子.
1)请注意{{one.someOtherValue}}可以随时更改,因此该指令必须了解此值的双向绑定特性.
2)我将在ng-repeat中使用它,因此它应该足够聪明,只能在包含它的特定ng-form的范围内工作.

我想我需要一个验证指令,但如果您认为有更好/更优雅的方式,请告知.我已经尝试创建这个指令并且失败了.

validation angularjs angularjs-directive

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

使用 ASP.NET 身份进行外部 oauth 登录,如何向 facebook 授权端点添加参数?我想通过“显示=弹出”

我正在使用 ASP.NET MVC 6(.net 核心)。有了它,我正在使用内置的外部登录逻辑来对 Facebook 进行身份验证。

我对其进行了修改,以便不是在同一窗口中进行身份验证,而是启动一个弹出窗口并在那里进行身份验证。成功后,弹出窗口会自行关闭并告诉我的主窗口重定向。这一切都有效。

但是,我想使用 Facebook 登录页面的“较小/迷你”版本。这可以在这里看到:https : //www.facebook.com/login.php?display=popup

“display=popup”是控制它的东西。

我不知道如何在我的 C# 代码中注入这个 kvp。我在哪里可以做?

app.UseFacebookAuthentication(new FacebookOptions
                              {
                        // was hoping for something here... tried to stick it into the authorizationurl but then i end up with 2 question marks and it fails
                              AppId = "blah",
                              AppSecret = "blah"
                              });
Run Code Online (Sandbox Code Playgroud)

        [AllowAnonymous]
        public IActionResult ExternalLogin(string provider, string returnUrl = null)
        {
            var redirectUrl = Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl });
            var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl); …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc facebook oauth-2.0 asp.net-core

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